Содержание
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 /var/www/r7-office/forms /var/www/r7-office/pages
Для выполнения команды потребуются установленные пакеты 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-Формы forms.conf
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
if ($scheme != "https")
{
return 301 https://$host$request_uri;
}
root {PATH_TO_WEB_FORMS};
index index.html;
client_max_body_size 100M;
access_log /var/log/nginx/forms-access.log;
error_log /var/log/nginx/forms-error.log;
server_name {DNS_NAME_FORMS};
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 /app/ {
proxy_pass http://{IP_SERVER_DISK}:8080/;
}
location / {
try_files $uri $uri/ /index.html;
}
}
Где:
{PATH_TO_WEB_FORMS}— путь до статики портала, например,/var/www/r7-office/forms;{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_FORMS}— DNS имя для портала Корпоративного сервера 2024, которое Вы прописали, например,forms.r7.ru.
2.3.8. Для Р7-Страницы pages.conf
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
if ($scheme != "https")
{
return 301 https://$host$request_uri;
}
root {PATH_TO_WEB_PAGES};
index index.html;
client_max_body_size 100M;
access_log /var/log/nginx/pages-access.log;
error_log /var/log/nginx/pages-error.log;
server_name {DNS_NAME_PAGES};
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 /app/ {
proxy_pass http://{IP_SERVER_DISK}:8080/;
}
location / {
try_files $uri $uri/ /index.html;
}
}Где:
{PATH_TO_WEB_PAGES}— путь до статики портала, например,/var/www/r7-office/pages;{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_PAGES}— DNS имя для портала Корпоративного сервера 2024, которое Вы прописали, например,pages.r7.ru.
2.3.9. Для Р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
Если вывод без ошибок, то идём дальше:
Проверьте права на каталог /etc/nginx/conf.d и его содержимое:
ls -la /etc/nginx/conf.d
В случае, если владелец отличается от root, выполните команду:
chown -R root: /etc/nginx/conf.d
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
https://{PATH_TO_WEB_FORMS}, например, https://forms.r7.ru
https://{PATH_TO_WEB_PAGES}, например, https://pages.r7.ruВажно. На ВМ с Корпоративным сервером 2024 должны быть открыты порты:
38033— для доступа к API Корпоративного сервера 2024 с сервера Reverse Proxy;8080— для доступа к Java Корпоративного сервера 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


