Содержание
0. Схема
1. На ВМ с Корпоративным сервером 2024
1.1. Скопируйте с установленного Корпоративного сервера 2024 статику (веб)
Пути до каталогов могут отличаться, просьба проверить перед выполнением 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/cdmail /var/www/r7-office/admin /var/www/r7-office/calendar /var/www/r7-office/contacts /var/www/r7-office/projects
Для выполнения команды потребуются установленные пакеты 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-program="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
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 адрес сервера, где установлен Корпоративный сервер 2024, например,10.10.22.15
;{DNS_NAME_ADMIN}
— DNS имя для модуля Р7-Управление, которое вы прописали, например,admin.r7.ru
.
2.3.2. Для Р7-Календарь 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 адрес сервера, где установлен Корпоративный сервер 2024, например,10.10.22.15
;{DNS_NAME_CALENDAR}
— DNS имя для модуля Р7-Календарь, которое вы прописали, например,calendar.r7.ru
.
2.3.3. Для Р7-Почта cdmail.conf
server { listen 80; listen [::]:80; listen 443 ssl http2; if ($scheme != "https") { return 301 https://$host$request_uri; } root {PATH_TO_WEB_CDMAIL}; index index.html; client_max_body_size 25M; access_log /var/log/nginx/cdmail-access.log; error_log /var/log/nginx/cdmail-error.log; server_name {DNS_NAME_CDMAIL}; 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_CDMAIL}
— путь до статики модуля Р7-Почта, например,/var/www/r7-office/cdmail
;{PATH_TO_CERTIFICATE}
— полный путь до ssl сертификата для защищённого соединения HTTPS, например/etc/nginx/ssl/r7.ru.crt
;{PATH_TO_KEY}
— полный путь до ключа от сертификата, например/etc/nginx/ssl/r7.ru.key
;{IP_SERVER_DISK}
— приватный IP адрес сервера, где установлен Корпоративный сервер 2024, например,10.10.22.15
;{DNS_NAME_CDMAIL}
— DNS имя для модуля Р7-Почта, которое вы прописали, например,cdmail.r7.ru
.
2.3.4. Для основной страницы Корпоративного сервера 2024 cddisk.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/cddisk-access.log; error_log /var/log/nginx/cddisk-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}
— путь до статики портала, например,/var/www/r7-office/cddisk
;{PATH_TO_CERTIFICATE}
— полный путь до ssl сертификата для защищённого соединения HTTPS, например/etc/nginx/ssl/r7.ru.crt
;{PATH_TO_KEY}
— полный путь до ключа от сертификата, например/etc/nginx/ssl/r7.ru.key
;{IP_SERVER_DISK}
— приватный IP адрес сервера, где установлен Корпоративный сервер 2024, например,10.10.22.15
;{DNS_NAME_DISK}
— DNS имя для портала Корпоративного сервера 2024, которое вы прописали, например,cddisk.r7.ru
.
2.3.5. Для Р7-Контакты contacts.conf
server { listen 80; listen [::]:80; listen 443 ssl http2; if ($scheme != "https") { return 301 https://$host$request_uri; } root {PATH_TO_WEB_CONTACTS}; index index.html; client_max_body_size 32M; access_log /var/log/nginx/contacts-access.log; error_log /var/log/nginx/contacts-error.log; server_name {DNS_NAME_CONTACTS}; 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_CONTACTS}
— путь до статики модуля Р7-Контакты, например,/var/www/r7-office/contacts
;{PATH_TO_CERTIFICATE}
— полный путь до ssl сертификата для защищённого соединения HTTPS, например/etc/nginx/ssl/r7.ru.crt
;{PATH_TO_KEY}
— полный путь до ключа от сертификата, например/etc/nginx/ssl/r7.ru.key
;{IP_SERVER_DISK}
— приватный IP адрес сервера, где установлен Корпоративный сервер 2024, например,10.10.22.15
;{DNS_NAME_CONTACTS}
— DNS имя для портала Корпоративного сервера 2024, которое вы прописали, например,contacts.r7.ru
.
2.3.6. Для Р7-Проекты projects.conf
server { listen 80; listen [::]:80; listen 443 ssl http2; if ($scheme != "https") { return 301 https://$host$request_uri; } root {PATH_TO_WEB_PROJECTS}; index index.html; client_max_body_size 100M; access_log /var/log/nginx/projects-access.log; error_log /var/log/nginx/projects-error.log; server_name {DNS_NAME_PROJECTS}; 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_PROJECTS}
— путь до статики портала, например,/var/www/r7-office/projects
;{PATH_TO_CERTIFICATE}
— полный путь до ssl сертификата для защищённого соединения HTTPS, например/etc/nginx/ssl/r7.ru.crt
;{PATH_TO_KEY}
— полный путь до ключа от сертификата, например/etc/nginx/ssl/r7.ru.key
;{IP_SERVER_DISK}
— приватный IP адрес сервера, где установлен Корпоративный сервер 2024, например,10.10.22.15
;{DNS_NAME_PROJECTS}
— DNS имя для портала Корпоративного сервера 2024, которое вы прописали, например,projects.r7.ru
.
2.3.7. Для Р7-Графика 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 адрес сервера, где установлен Корпоративный сервер 2024, например,10.10.22.15
.
2.4. Проверьте конфигурационные файлы
2.4.1. Проверьте корректность
Выполните:
sudo nginx -t
Если вывод без ошибок, то идём дальше:
2.4.2. Перезапустите Nginx
sudo systemctl restart nginx
3. Проверьте работу
3.1. Перейдите по url порталов и проверьте, что всё работает:
https://{DNS_NAME_DRAW}, например, https://draw.r7.ru https://{PATH_TO_WEB_DISK}, например, https://cddisk.r7.ru https://{PATH_TO_WEB_MAIL}, например, https://cdmail.r7.ru https://{PATH_TO_WEB_CALENDAR}, например, https://calendar.r7.ru https://{PATH_TO_WEB_ADMIN}, например, https://admin.r7.ru https://{PATH_TO_WEB_CONTACTS}, например, https://contacts.r7.ru https://{PATH_TO_WEB_PROJECTS}, например, https://projects.r7.ru
Важно. На ВМ с Корпоративным сервером 2024 должны быть открыты порты:
38033
— для доступа к API Корпоративного сервера 2024 с сервера Reverse Proxy;3005
— для доступа к Р7-Графика с Reverse Proxy.
3.1. Если на Сервере с Корпоративным сервером 2024 Сервер документов (DS) вынесен на другую ВМ
Примечание. Так как Reverse Proxy обращается к бэкенду Корпоративного портала 2024 напрямую и Сервер документов установлен на другом сервере, то необходимости в сервисе Nginx на сервере с бэкендом отпадает.
3.1.1. Остановите nginx на ВМ с Корпоративным сервером 2024
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
на следующий:
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
Следующие инструкции выполняются на сервере с Reverse Proxy.
Если в п. 3.2.1 вместо {HTTP_or_HTTPS}
указали https, измените на http и перезапустите nginx на reverse proxy/proxy, как это делали в п. 3.2.2.2.
4. Проверьте работу портала и открытие документов
Откройте портал Корпоративного сервера 2024 и проверьте:
https://{PATH_TO_WEB_DISK}, например, https://cddisk.r7.ru
Открытие страница Сервера документов:
https://{DNS_NAME_DS}, например, https://ds.r7.ru