Содержание
- Настройка Reverse Proxy для Корпоративного сервера 2024
- 1. Схема
- Какие порты используются
- 2. Что необходимо подготовить
- 3. Переменные, используемые в конфигурации
- 4. Установите Nginx
- 5. Подготовьте SSL-сертификат
- 6. Скопируйте веб-файлы на сервер Reverse Proxy
- 7. Настройте Reverse Proxy
- 8. Создайте конфигурации Nginx
- 9. Настройка Сервера документов
- 10. Если Сервер документов работает по HTTPS
- 11. Проверьте конфигурацию Nginx
- 12. Перезапустите Nginx
- 13. Проверьте работу сервисов
Настройка Reverse Proxy для Корпоративного сервера 2024
В статье описана настройка отдельной виртуальной машине (далее ВМ) с Nginx Reverse Proxy для доступа пользователей к Корпоративному серверу 2024 и его сервисам по HTTPS.
Перед началом работы убедитесь, что DNS-имена сервисов уже созданы и указывают на IP-адрес сервера Reverse Proxy.
1. Схема
В типовой конфигурации используются как минимум две ВМ:
- ВМ с Корпоративным сервером 2024 — на ней работают основные сервисы продукта.
- ВМ с Reverse Proxy — на ней установлен Nginx. Она принимает внешние HTTPS-подключения и передает запросы внутренним сервисам.
Схема подключения:

Какие порты используются
На ВМ с Корпоративным сервером 2024 должны быть доступны для Reverse Proxy:
| Порт | Назначение |
|---|---|
| 38033 | API Корпоративного сервера 2024 |
| 8080 | Java-сервис; используется, в частности, для /app/ |
| 3005 | P7 Графика |
Порты должны быть доступны из сети 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 |
|---|---|
| Корпоративный сервер 2024 | https://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;
- отображается веб-интерфейс соответствующего сервиса;
- отсутствуют ошибки подключения.
Проверяйте только те сервисы, которые установлены и настроены в вашей конфигурации.













