Содержание
Инструкция актуальна для настроенного Корпоративного сервера 2024 на HTTPS, если портал настроен на HTTP, обновите URL на протокол HTTPS по данной инструкции.
0. Схема
1. На ВМ с Р7-Диском
1.1. Скопируйте с установленного Р7-Диск статику (веб)
Пути до каталогов могут отличаться, просьба проверить перед выполнением ls -la /var/www/r7-office
sudo tar -cvf /root/web.tar.bz2 --use-compress-program="lbzip2 -k" /var/www/r7-office/cddisk /var/www/r7-office/mail /var/www/r7-office/admin /var/www/r7-office/calendar
Для выполнения команды потребуются установленные пакеты tar и lbzip2, пример установки
# deb дистрибутив
sudo apt install tar lbzip2
# rpm дистрибутив
sudo yum install tar lbzip2
1.2. Перенесите на машину с reverse proxy/proxy
Перенести можете удобным Вам способом
2. На ВМ с Reverse proxy/Proxy
2.1. Распакуйте архив
sudo tar xf web.tar.bz2 -C / --use-compress-prog="lbzip2"
2.2. Установите Nginx
# Для apt sudo apt update && apt install nginx # Для apt-get sudo apt-get update && apt-get install nginx # Для yum sudo yum install nginx # Для dnf sudo dnf install nginx
2.3. Добавьте конфигурационные файлы для Nginx
Разместите файла по пути /etc/nginx/conf.d/
2.3.1. Для Р7-Адмика admin.conf
admin.conf
server { listen 80; listen [::]:80; listen 443 ssl http2; if ($scheme != "https") { return 301 https://$host$request_uri; } root {PATH_TO_WEB_ADMIN}; index index.html; client_max_body_size 10M; access_log /var/log/nginx/admin-access.log; error_log /var/log/nginx/admin-error.log; server_name {DNS_NAME_ADMIN}; server_tokens off; ssl_certificate {PATH_TO_CERTIFICATE}; ssl_certificate_key {PATH_TO_KEY}; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location /api { proxy_pass http://{IP_SERVER_DISK}:38033/api; } location / { try_files $uri $uri/ /index.html; } }
Где,
- {PATH_TO_WEB_ADMIN} — путь до статики портала Р7-Админ, например, /var/www/r7-office/admin;
- {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
- {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key;
- {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15;
- {DNS_NAME_ADMIN} — dns имя для портала Р7-Админ, которое Вы прописали, например, admin.r7.ru
2.3.2. Для Р7-Календарь calendar.conf
calendar.conf
server { listen 80; listen 443 ssl http2; if ($scheme != "https") { return 301 https://$host$request_uri; } root {PATH_TO_WEB_CALENDAR}; index index.html; access_log /var/log/nginx/calendar-access.log; error_log /var/log/nginx/calendar-error.log; server_name {DNS_NAME_CALENDAR}; server_tokens off; ssl_certificate {PATH_TO_CERTIFICATE}; ssl_certificate_key {PATH_TO_KEY}; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location /api { proxy_pass http://{IP_SERVER_DISK}:38033/api; } location / { try_files $uri $uri/ /index.html; } }
Где,
- {PATH_TO_WEB_CALENDAR} — путь до статики портала Р7-Календарь, например, /var/www/r7-office/calendar;
- {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
- {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key;
- {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15;
- {DNS_NAME_CALENDAR} — dns имя для портала Р7-Календарь, которое Вы прописали, например, calendar.r7.ru
2.3.3. Для Р7-Почта mail.conf
main.conf
server { listen 80; listen [::]:80; listen 443 ssl http2; if ($scheme != "https") { return 301 https://$host$request_uri; } root {PATH_TO_WEB_MAIL}; index index.html; client_max_body_size 5120M; access_log /var/log/nginx/mail-access.log; error_log /var/log/nginx/mail-error.log; server_name {DNS_NAME_MAIL}; server_tokens off; ssl_certificate {PATH_TO_CERTIFICATE}; ssl_certificate_key {PATH_TO_KEY}; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location /api { proxy_pass http://{IP_SERVER_DISK}:38033/api; } location / { try_files $uri $uri/ /index.html; } }
Где,
- {PATH_TO_WEB_MAIL} — путь до статики портала Р7-Почта, например, /var/www/r7-office/mail;
- {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
- {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key;
- {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15;
- {DNS_NAME_MAIL} — dns имя для портала Р7-Почта, которое Вы прописали, например, mail.r7.ru
2.3.4. Для Р7-Диск disk.conf
disk.conf
server { listen 80; listen [::]:80; listen 443 ssl http2; if ($scheme != "https") { return 301 https://$host$request_uri; } root {PATH_TO_WEB_DISK}; index index.html; client_max_body_size 10240M; access_log /var/log/nginx/disk-access.log; error_log /var/log/nginx/disk-error.log; server_name {DNS_NAME_DISK}; server_tokens off; ssl_certificate {PATH_TO_CERTIFICATE}; ssl_certificate_key {PATH_TO_KEY}; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location /api { proxy_pass http://{IP_SERVER_DISK}:38033/api; } location / { try_files $uri $uri/ /index.html; } }
Где,
- {PATH_TO_WEB_DISK} — путь до статики портала Р7-Админ, например, /var/www/r7-office/disk;
- {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
- {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key;
- {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15;
- {DNS_NAME_DISK} — dns имя для портала Р7-Диск, которое Вы прописали, например, disk.r7.ru
2.3.5. Для Р7-Графика draw.conf (при наличии установленного дистрибутива)
draw.conf
server { listen 80; listen [::]:80; listen 443 ssl http2; charset utf-8; if ($scheme != "https") { return 301 https://$host$request_uri; } server_name {DNS_NAME_DRAW}; server_tokens off; access_log /var/log/nginx/draw-access.log; error_log /var/log/nginx/draw-error.log; ssl_certificate {PATH_TO_CERTIFICATE}; ssl_certificate_key {PATH_TO_KEY}; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://{IP_SERVER_DISK}:3005; proxy_redirect default; proxy_http_version 1.1; } }
Где,
- {DNS_NAME_DRAW} — dns имя для сервиса Р7-Графика, которое Вы прописали, например, draw.r7.ru
- {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt
- {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key
- {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15
2.4. Проверьте конфигурационные файлы
2.4.1. Проверьте корректность
Выполните
sudo nginx -t
Если вывод без ошибок, то идём дальше
2.4.2. Перезапустите Nginx
sudo systemctl restart nginx
3. Проверьте работу
Перейдите по url порталов и проверьте, что всё работает.
https://{DNS_NAME_DRAW}, например, https://draw.r7.ru https://{PATH_TO_WEB_DISK}, например, https://disk.r7.ru https://{PATH_TO_WEB_MAIL}, например, https://mail.r7.ru https://{PATH_TO_WEB_CALENDAR}, например, https://calendar.r7.ru https://{PATH_TO_WEB_ADMIN}, например, https://admin.r7.ru
На ВМ с Р7-Диск должны быть открыты порты:
- 38033 — для доступа к api с reverse proxy;
- 3005 — для доступа к Р7-Графика с reverse proxy.
3.1. Если на Сервере с Р7-Диск (Корпоративный сервер 2024) Сервер документов (DS) вынесен на другой Сервер
Так как Reverse Proxy обращается к бэкенду Корпоративного портала 2024 напрямую и Сервер документов установлен на другом сервере, то необходимости в сервисе Nginx на сервере с бэкендом отпадает.
3.1.1. Остановите nginx на ВМ с Р7-Диск
sudo systemctl stop nginx sudo systemctl disable nginx
3.2. Для Сервера документов (DS)
3.2.1. На Сервере с Reverse proxy/proxy
Добавьте конфигурационный файл ds.conf
по пути /etc/nginx/conf.d/
map $http_host $this_host { "" $host; default $http_host; } map $http_x_forwarded_proto $the_scheme { default $http_x_forwarded_proto; "" $scheme; } map $http_x_forwarded_host $the_host { default $http_x_forwarded_host; "" $this_host; } map $http_upgrade $proxy_connection { default upgrade; "" close; } server { listen 80; server_name {DNS_NAME_DS}; server_tokens off; ## Redirects all traffic to the HTTPS host return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name {DNS_NAME_DS}; server_tokens off; access_log /var/log/nginx/ds-access.log; error_log /var/log/nginx/ds-error.log; ssl_certificate {PATH_TO_CERTIFICATE}; ssl_certificate_key {PATH_TO_KEY}; ssl_verify_client off; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_prefer_server_ciphers on; add_header X-Content-Type-Options nosniff; location / { proxy_pass {HTTP_or_HTTPS}://{IP_SERVER_DS}; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; proxy_set_header X-Forwarded-Host $the_host; proxy_set_header X-Forwarded-Proto $the_scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Где,
- {IP_SERVER_DS} — приватный ip адрес сервера с Сервером документов
- {HTTP_or_HTTPS} — протокол, на который настроен Сервер документов, http или https;
- {DNS_NAME_DS} — dns имя для Сервера документов, которое Вы прописали, например, ds.r7.ru (по нему, через Реверс прокси, будут подключаться пользователи к Серверу документов);
- {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
- {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key.
3.2.2. Перезапустить nginx
3.2.2.1. Проверяем корректность
Выполните
sudo nginx -t
Если вывод без ошибок, то идём дальше
3.2.2.2. Перезапускаем
sudo systemctl restart nginx
3.3. Если Сервер документов был на https
3.3.1. Можете перевести его на http
- На сервере с DS
3.3.1.1. Измените конфигурационный файл на сервере с Сервером документов
По пути /etc/r7-office/documentserver/nginx/
замените файл ds.conf на следующий
ds.conf
include /etc/nginx/includes/http-common.conf; server { listen 0.0.0.0:80; listen [::]:80 default_server; server_tokens off; set $secure_link_secret SmJYZeJcHlQNj8jiQIheGz9rA; include /etc/nginx/includes/ds-*.conf; }
3.3.1.2. Выполните скрипт обновления секрета в конфиге nginx и ds
sudo bash /usr/bin/documentserver-update-securelink.sh
3.3.1.3. Проверка настройки на reverse proxy/proxy
- На сервере с Reverse Proxy
Если в п. 3.2.1 вместо {HTTP_or_HTTPS} указали https, измените на http и перезапустите nginx на reverse proxy/proxy, как это делали в п. 3.2.2
4. Проверьте работу портала и открытие документов
Портал Р7-Диска и открытия документов в нём
https://{PATH_TO_WEB_DISK}, например, https://disk.r7.ru
Открытие страница Сервера документов
https://{DNS_NAME_DS}, например, https://ds.r7.ru