Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы
Редакторы
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
Команда
Команда
Мобильные редакторы
Мобильные редакторы
Облачный офис
Облачный офис
Почта
Почта
Органайзер
Органайзер
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

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

Обновлено: 24.12.25

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.3.10 Настройка Сервера документов ds.conf, установленного совместно с Корпоративным сервером (если DS вынесен на отдельную ВМ — пропустите)

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_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_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location / {
            proxy_pass https://{IP_SERVER_DS};
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_redirect     default;
            proxy_http_version 1.1;
        }
}

Где:

  • {IP_SERVER_DS} — приватный IP адрес сервера с Сервером документов;
  • {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.

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