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

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

Обновлено: 02.10.26

Инструкция актуальна для версии продукта: 2026.1.12.16832

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

В статье описана настройка отдельной виртуальной машине (далее ВМ) с Nginx Reverse Proxy для доступа пользователей к Корпоративному серверу 2024 и его сервисам по HTTPS.

Обратите внимание

Перед началом работы убедитесь, что DNS-имена сервисов уже созданы и указывают на IP-адрес сервера Reverse Proxy.

1. Схема

В типовой конфигурации используются как минимум две ВМ:

  1. ВМ с Корпоративным сервером 2024 — на ней работают основные сервисы продукта.
  2. ВМ с Reverse Proxy — на ней установлен Nginx. Она принимает внешние HTTPS-подключения и передает запросы внутренним сервисам.

Схема подключения:

Схема подключения

Какие порты используются

На ВМ с Корпоративным сервером 2024 должны быть доступны для Reverse Proxy:

ПортНазначение
38033API Корпоративного сервера 2024
8080Java-сервис; используется, в частности, для /app/
3005P7 Графика

Порты должны быть доступны из сети Reverse Proxy, но не обязательно должны быть доступны из интернета.

2. Что необходимо подготовить

Перед началом настройки подготовьте:

  • ВМ с установленным Корпоративным сервером 2024 (Список поддерживаемых ОС ↗);
  • отдельную ВМ для Reverse Proxy;
  • установленную ОС с пакетным менеджером apt, yum или dnf;
  • доступ sudo на обеих ВМ;
  • сетевую связность между Reverse Proxy и Корпоративным сервером;
  • DNS-имена сервисов;
  • SSL-сертификат и закрытый ключ;
  • открытые между серверами необходимые порты.

2.1. Подготовьте DNS-имена

Пример набора DNS-имен:

СервисDNS-имя
Корпоративный серверcddisk.example.ru
P7-Управлениеadmin.example.ru
P7-Календарьcalendar.example.ru
P7-Почтаcdmail.example.ru
P7-Контактыcontacts.example.ru
P7-Проектыprojects.example.ru
P7-Формыforms.example.ru
P7-Страницыpages.example.ru
P7-Графикаdraw.example.ru
Сервер документовds.example.ru

Все эти имена должны разрешаться в IP-адрес ВМ с Reverse Proxy.

3. Переменные, используемые в конфигурации

В примерах ниже используются следующие обозначения:

ПеременнаяЗначение
{IP_SERVER_DISK}IP-адрес ВМ с Корпоративным сервером 2024
{IP_SERVER_DS}IP-адрес ВМ с Сервером документов
{PATH_TO_CERTIFICATE}путь к SSL-сертификату
{PATH_TO_KEY}путь к закрытому ключу SSL-сертификата
{PATH_TO_WEB_DISK}каталог веб-части Корпоративного сервера 2024
{DNS_NAME_DISK}DNS-имя Корпоративного сервера 2024
{DNS_NAME_ADMIN}DNS-имя Р7-Управления
{DNS_NAME_CALENDAR}DNS-имя Р7-Календаря
{DNS_NAME_CDMAIL}DNS-имя Р7-Почты
{DNS_NAME_CONTACTS}DNS-имя Р7-Контактов
{DNS_NAME_PROJECTS}DNS-имя Р7-Проектов
{DNS_NAME_FORMS}DNS-имя Р7-Форм
{DNS_NAME_PAGES}DNS-имя Р7-Страниц
{DNS_NAME_DRAW}DNS-имя Р7-Графики
{DNS_NAME_DS}DNS-имя Сервера документов

Например:

IP_SERVER_DISK = 10.10.22.15
DNS_NAME_DISK = cddisk.example.ru

4. Установите Nginx

Выберите команду в зависимости от используемого дистрибутива.

Дистрибутивы на базе Debian

из списка поддерживаемых ОС ↗

Введите:

sudo apt update
sudo apt install nginx

или

sudo apt-get update
sudo apt-get install nginx

RPM-дистрибутивы

sudo dnf install nginx

или

sudo dnf install nginx

Запустите Nginx и добавьте его в автозагрузку:

sudo systemctl enable nginx

Проверьте состояние сервиса

sudo systemctl status nginx

5. Подготовьте SSL-сертификат

Создайте каталог для сертификата:

sudo mkdir -p /etc/nginx/ssl

Поместите в него сертификат и закрытый ключ.

Например:

/etc/nginx/ssl/r7.crt
/etc/nginx/ssl/r7.key

В конфигурациях далее:

{PATH_TO_CERTIFICATE}
/etc/nginx/ssl/r7.crt
{PATH_TO_KEY}
/etc/nginx/ssl/r7.key
Обратите внимание

Закрытый ключ SSL-сертификата должен иметь права, исключающие доступ посторонних пользователей.

Пример:

sudo chown root:root /etc/nginx/ssl/r7.key
sudo chmod 600 /etc/nginx/ssl/r7.key

6. Скопируйте веб-файлы на сервер Reverse Proxy

Этот шаг выполняется на ВМ с Корпоративным сервером 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.

Дистрибутивы на базе Debian

из списка поддерживаемых ОС ↗

sudo apt update
sudo apt install tar lbzip2

RPM-дистрибутивы

sudo yum install tar lbzip2

или:

sudo dnf install tar lbzip2

После создания архива /root/web.tar.bz2 перенесите его на BM с Reverse Proxy.

7. Настройте Reverse Proxy

Все следующие пункты выполняются на ВМ с Reverse Proxy.

7.1. Распакуйте веб-файлы

Поместите архив на сервер Reverse Proxy и выполните:

sudo tar xf web.tar.bz2 -C / --use-compress-program="lbzip2"

После распаковки должны появиться каталоги:

/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

8. Создайте конфигурации Nginx

Конфигурационные файлы необходимо разместить в:

/etc/nginx/conf.d/

Каждый сервис имеет собственный файл конфигурации.

8.1. Р7-Управление

Создайте /etc/nginx/conf.d/admin.conf

Содержимое файла:

server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
root /var/www/r7-office/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 admin.example.ru;
server_tokens off;
ssl_certificate /etc/nginx/ssl/r7.crt;
ssl_certificate_key /etc/nginx/ssl/r7.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location /api {
proxy_pass http://10.10.22.15:38033/api;
}
location / {
try_files $uri $uri/ /index.html;
}

Замените:

  • admin.example.ru на DNS-имя P7-Управления;
  • 10.10.22.15 на IP-адрес ВМ с Корпоративным сервером 2024;
  • пути к сертификату и ключу на ваши значения.

8.2. Р7-Календарь

Создайте /etc/nginx/conf.d/calendar.conf

Содержимое файла:

server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
root /var/www/r7-office/calendar;
index index.html;
access_log /var/log/nginx/calendar-access.log;
error_log /var/log/nginx/calendar-error.log;
server_name calendar.example.ru;
server_tokens off;
ssl_certificate /etc/nginx/ssl/r7.crt;
ssl_certificate_key /etc/nginx/ssl/r7.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location /api {
proxy_pass http://10.10.22.15:38033/api;
}
location / {
try_files $uri $uri/ /index.html;
}

Замените:

  • calendar.example.ru на DNS-имя Р7-Календарь;
  • 10.10.22.15 на IP-адрес ВМ с Корпоративным сервером 2024;
  • пути к сертификату и ключу на ваши значения.

8.3. Р7-Почта

Создайте /etc/nginx/conf.d/cdmai1.conf

Содержимое файла:

server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
root /var/www/r7-office/cdmai1;
index index.html;
client_max_body_size 25M;
access_log /var/log/nginx/cdmai1-access.log;
error_log /var/log/nginx/cdmai1-error.log;
server_name cdmai1.example.ru;
server_tokens off;
ssl_certificate /etc/nginx/ssl/r7.crt;
ssl_certificate_key /etc/nginx/ssl/r7.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location /api {
proxy_pass http://10.10.22.15:38033/api;
}
location / {
try_files $uri $uri/ /index.html;
}

Замените:

  • example.ru на DNS-имя Р7-Почта;
  • 10.22.15 на IP-адрес ВМ с Корпоративным сервером 2024;
  • пути к сертификату и ключу на ваши значения.

8.4. Основной портал Корпоративного сервера 2024

Создайте /etc/nginx/conf.d/cddisk.conf

Содержимое файла:

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    root /var/www/r7-office/cddisk;
    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 cddisk.example.ru;
    server_tokens off;

    ssl_certificate /etc/nginx/ssl/r7.crt;
    ssl_certificate_key /etc/nginx/ssl/r7.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location /api {
        proxy_pass http://10.10.22.15:38033/api;
    }

    location / {
        try_files $uri $uri/ /index.html;
    }
}

Замените:

  • example.ru на DNS-имя основного портала КС24;
  • 10.22.15 на IP-адрес ВМ с Корпоративным сервером 2024;
  • пути к сертификату и ключу на ваши значения.

8.5. Р7-Контакты

Создайте /etc/nginx/conf.d/contacts.conf

Содержимое файла:

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;
        if ($scheme != "https")
        {
                return 301 https://$host$request_uri;
        }
        root /var/www/r7-office/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 contacts.example.ru;
        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://10.10.22.15:38033/api;
        }

        location / {
        try_files $uri $uri/ /index.html;
        }

Замените:

  • contacts.example.ru на DNS-имя P7-Контакты;
  • 10.10.22.15 на IP-адрес BM с Корпоративным сервером 2024;
  • пути к сертификату и ключу на ваши значения.
Важно

Остальные параметры SSL и server должны соответствовать конфигурации остальных сервисов.

8.6. Р7-Проекты

Создайте /etc/nginx/conf.d/projects.conf

Содержимое файла:

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;
        if ($scheme != "https")
        {
                return 301 https://$host$request_uri;
        }
        root /var/www/r7-office/projects
        index index.html;
        client_max_body_size 100M;
        server_name projects.example.ru;
        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://10.10.22.15:38033/api;
        }

        location / {
        try_files $uri $uri/ /index.html;
        }

Замените:

  • projects.example.ru на DNS-имя P7-Проекты;
  • 10.10.22.15 на IP-адрес BM с Корпоративным сервером 2024;
  • пути к сертификату и ключу на ваши значения.

8.7. Р7-Формы

Создайте /etc/nginx/conf.d/forms.conf

Для Р7-Форм необходимо проксировать не только API, но и путь /app/:

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;
 
        if ($scheme != "https")
        {
                return 301 https://$host$request_uri;
        }
 
        root /var/www/r7-office/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 forms.example.ru;
        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://10.10.22.15:38033/api;
}
       location /app/ {
       proxy_pass http://10.10.22.15:8080/;
}
       location / {
    try_files $uri $uri/ /index.html;
}

Замените:

  • forms.example.ru на DNS-имя P7-Формы;
  • 10.10.22.15 на IP-адрес ВМ с Корпоративным сервером 2024;
  • пути к сертификату и ключу на ваши значения.

Корневой каталог:

root /var/www/r7-office/forms;

DNS:

server_name forms.example.ru;

8.8. Р7-Страницы

Создайте /etc/nginx/conf.d/pages.conf

Для Р7-Страниц используется аналогичная схема:

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;
 
        if ($scheme != "https")
        {
                return 301 https://$host$request_uri;
        }
        
        root /var/www/r7-office/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 pages.example.ru;
        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://10.10.22.15:38033/api;
}

        location /app/ {
        proxy_pass http://10.10.22.15:8080/;
}

        location / {
        try_files $uri $uri/ /index.html;
}

8.9. Р7-Графика

Если Р7-Графика установлена, создайте /etc/nginx/conf.d/draw.conf

Для этого сервиса используется проксирование на порт 3005:

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;

    charset utf-8;

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    server_name draw.example.ru;
    server_tokens off;

    access_log /var/log/nginx/draw-access.log;
    error_log /var/log/nginx/draw-error.log;

    ssl_certificate /etc/nginx/ssl/r7.crt;
    ssl_certificate_key /etc/nginx/ssl/r7.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://10.10.22.15:3005;
        proxy_redirect default;
        proxy_http_version 1.1;
    }
}
Обратите внимание

Если Р7-Графика не установлена, этот файл создавать не требуется.

9. Настройка Сервера документов

Дальнейшая настройка зависит от того, где установлен Сервер документов.

Вариант 1. Сервер документов установлен на той же ВМ

Если Сервер документов установлен совместно с Корпоративным сервером 2024, создайте /etc/nginx/conf.d/ds.conf.

Используйте проксирование на адрес сервера документов:

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;

    charset utf-8;

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    server_name ds.example.ru;
    server_tokens off;

    access_log /var/log/nginx/ds-access.log;
    error_log /var/log/nginx/ds-error.log;

    ssl_certificate /etc/nginx/ssl/r7.crt;
    ssl_certificate_key /etc/nginx/ssl/r7.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass https://10.10.22.15;
        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;
    }
}

Если Сервер документов вынесен на отдельную ВМ, используйте вариант ниже.

Вариант 2. Сервер документов на отдельной ВМ

Если Сервер документов установлен на отдельном сервере, Reverse Proxy должен обращаться непосредственно к этой ВМ.

В этом случае на сервере с Корпоративным сервером 2024 Nginx для проксирования Сервер документов не требуется.

При необходимости его можно остановить:

sudo systemctl stop nginx
sudo systemctl disable nginx

На сервере Reverse Proxy создайте /etc/nginx/conf.d/ds.conf.

Конфигурация:

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 ds.example.ru;
    server_tokens off;

    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name ds.example.ru;
    server_tokens off;

    access_log /var/log/nginx/ds-access.log;
    error_log /var/log/nginx/ds-error.log;

    ssl_certificate /etc/nginx/ssl/r7.crt;
    ssl_certificate_key /etc/nginx/ssl/r7.key;

    ssl_verify_client off;

    add_header X-Content-Type-Options nosniff;

    location / {
        proxy_pass http://10.10.22.20;
        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;
    }
}

Где:

  • 10.10.22.20 — IP-адрес ВМ с Сервером документов.

Если Сервер документов работает по HTTPS, замените:

proxy_pass http://10.10.22.20;

на:

proxy_pass https://10.10.22.20;

10. Если Сервер документов работает по HTTPS

Если Сервер документов уже настроен на HTTPS, его можно оставить в таком режиме.

В этом случае в конфигурации Reverse Proxy используется:

proxy_pass https://{IP_SERVER_DS};

Если Сервер документов необходимо перевести на HTTP во внутренней сети, это можно сделать после проверки конфигурации.

На Сервере документов полностью замените содержимое документа ds.conf:

/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;
}

После этого выполните обновление секрета с помощью скрипта:

sudo bash /usr/bin/documentserver-update-securelink.sh

Далее на Reverse Proxy измените proxy_pass с https на http и перезапустите Nginx.

11. Проверьте конфигурацию Nginx

Перед перезапуском обязательно проверьте конфигурацию:

sudo nginx -t

Ожидаемый результат:

Результат проверки конфигурации

Если Nginx сообщает об ошибке, не перезапускайте сервис, пока ошибка не будет исправлена.

Дополнительно проверьте файлы:

ls -la /etc/nginx/conf.d

Владельцем конфигурационных файлов должен быть root.

При необходимости:

sudo chown -R root: /etc/nginx/conf.d

12. Перезапустите Nginx

Проверьте корректность конфигурации

nginx -t

После успешной проверки:

sudo systemctl restart nginx

Проверьте состояние:

sudo systemctl status nginx

13. Проверьте работу сервисов

Откройте в браузере соответствующие DNS-имена:

СервисURL
Корпоративный сервер 2024https://cddisk.example.ru
P7-Управлениеhttps://admin.example.ru
P7-Календарьhttps://calendar.example.ru
P7-Почтаhttps://cdmail.example.ru
P7-Контактыhttps://contacts.example.ru
P7-Проектыhttps://projects.example.ru
P7-Формыhttps://forms.example.ru
P7-Страницыhttps://pages.example.ru
P7-Графикаhttps://draw.example.ru
Сервер документовhttps://ds.example.ru

При успешной проверке должны выполняться следующие условия:

  • сервис открывается по HTTPS;
  • отображается веб-интерфейс соответствующего сервиса;
  • отсутствуют ошибки подключения.

Проверяйте только те сервисы, которые установлены и настроены в вашей конфигурации.

Была ли эта статья полезной?

Поделитесь пожалуйста своим мнением

      В статье есть ошибкиРекомендации не помоглиТекст трудно понятьСодержание статьи не соответствует заголовкуДругое