• Post category:Настройки
  • Запись изменена:13.08.2025

Содержание

0. Схема

Настройка Reverse proxy-Proxy для Корпоративного портала 2024

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

Если вывод без ошибок, то идём дальше:

Настройка Reverse proxy -Proxy для Корпоративного портала 2024

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

Если вывод без ошибок, то идём дальше:

Настройка Reverse proxy -Proxy для Корпоративного портала 2024

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
Была ли полезна статья?
Позвольте нам стать лучше