Установка и настройка обратного прокси-сервера nginx
В качестве примера мы будем использовать прокси-сервер nginx. Вы можете использовать любой другой обратный прокси-сервер (reverse proxy).
Установка и настройка на Linux
В качестве примера используется ОС Ubuntu 20.04.
Установка
Чтобы установить nginx, выполните следующие действия:
-
Запустите терминал.
-
Войдите как пользователь root:
sudo -i -
Чтобы установить nginx, выполните следующие команды:
apt updateapt install nginx
Настройка
Чтобы настроить nginx, выполните следующие действия:
-
Проверьте, включен ли брандмауэр:
ufw statusСообщение «Состояние: неактивен» говорит о том, что брандмауэр выключен. В этом случае мы настоятельно рекомендуем его включить. Для этого выполните следующие команды:
ufw allow sshufw enablesystemctl enable ufwsystemctl start ufwПосле этого команда
ufw statusдолжна выдать аналог ичный результат, который говорит о том, что брандмауэр работает: -
Выведите настройки доступа для приложений, зарегистрированных в ufw:
ufw app listКак видно из этого вывода, для nginx настроено три профиля:
- Nginx Full — этот профиль открывает порты 80 (обычный, нешифрованный веб-трафик) и 443 (трафик шифруется с помощью TLS/SSL);
- Nginx HTTP — этот профиль открывает только порт 80 (обычный, нешифрованный веб-трафик);
- Nginx HTTPS — этот профиль открывает только порт 443 (трафик шифруется с помощью TLS/SSL).
Далее мы покажем, как настроить трафик для порта 80. Если же вы хотите использовать защищенное соединение, вам нужно будет разрешить профиль Nginx HTTPS и затем настроить SSL. Эти настройки выходят за рамки нашей документации, но вы можете прочитать об этом в дополнительной литературе, например тут: How To Secure Nginx with Let's Encrypt on Ubuntu 20.04.
-
Разрешите профиль Nginx HTTP:
ufw allow 'Nginx HTTP' -
Проверьте сделанные изменения:
ufw status
-
Ubuntu 20.04 запускает nginx автоматически после завершения процесса установки. Чтобы проверить это, узнайте IP-адрес своего компьютера:
ifconfig
-
Запустите браузер и в адресной строке введите:
http://10.70.3.209/В случае успеха вы увидите стандартную страницу nginx:

Настройка взаимодействия с сервером
Порты отладки и сервера указаны в конфигурационных файлах debug.yml и server.yml. Убедитесь, что значения портов в nginx соответствуют вашим конфигурационным файлам.
Чтобы настроить взаимодействие nginx с сервером, выполните следующие действия:
-
Удалите стандартную настройку сайта из каталогов /etc/nginx/sites-available и /etc/nginx/sites-enabled:
rm /etc/nginx/sites-available/defaultrm /etc/nginx/sites-enabled/default -
Создайте собственную настройку сайта. Для этого запустите редактор vi:
vi /etc/nginx/sites-available/ess -
Нажмите a, чтобы перейти в режим редактирования.
В примере ниже рассм атривается простой случай развертывания, когда nginx установлен на том же компьютере, что и сервер.
-
Вставьте следующее содержимое (перед вставкой замените server.example.com на имя, которое будет у вашего сервера (разумеется, IP-адрес сервера должен быть прописан в DNS)):
В этом случае:
events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;client_max_body_size 100m;sendfile on;keepalive_timeout 65;# Mapping for WebSocket upgradesmap $http_upgrade $connection_upgrade {default upgrade;'' close;}# Upstream serversupstream httpServer {server 10.70.3.209:9090;}upstream debugServer {server 10.70.3.209:8080;}server {listen 80;server_name server.example.com;# Main Proxy Locationlocation / {proxy_pass http://httpServer/;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Port $server_port;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_http_version 1.1;}# IDE Locationlocation /ide {allow 10.70.3.0/24; # Adjust to your trusted IP rangedeny all;proxy_pass http://httpServer;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Port $server_port;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;# Timeouts for WebSocket connectionsproxy_read_timeout 86400;proxy_send_timeout 86400;proxy_connect_timeout 86400;# Disable buffering for WebSocketsproxy_buffering off;}# Debug Locationlocation /debug {allow 10.70.3.0/24; # Adjust to your trusted IP rangedeny all;proxy_pass http://debugServer;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Port $server_port;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;proxy_http_version 1.1;# WebSocket Timeoutsproxy_read_timeout 86400;proxy_send_timeout 86400;proxy_connect_timeout 86400;}# Loggingaccess_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log warn;}}
Директива client_max_body_size ограничивает максимальный размер файла, который можно передать через nginx. Значение 0 отключает такое ограничение.
-
Нажмите Esc, чтобы вернуть редактор в кома ндный режим.
-
Нажмите :x и затем Enter.
-
Создайте символическую ссылку между каталогами:
ln -s /etc/nginx/sites-available/ess /etc/nginx/sites-enabled/ess -
Перезапустите nginx:
systemctl reload nginx -
Проверьте работоспособность сервера через внешний IP-адрес:
http://server.example.com/maintenance/server/v1/heartbeatВ случае успеха вы увидите стандартный ответ сервера:

Сервер и nginx на разных компьютерах, HTTP
В более сложном случае сервер и nginx могут находиться на разных компьютерах. Тогда:
-
Разрешите доступность сервера по одному из его IP-адресов (см. Сетевые настройки сервера), например 192.168.0.3.
-
Этот же адрес укажите в блоке upstream файла /etc/nginx/sites-available/ess (ссылка):
upstream httpServer {server 192.168.0.3:9090;}
а также, при использовании сервера отладки:
upstream debugServer {
server 192.168.0.3:8080;
}
-
Перезапустите nginx, если он уже запущен:
systemctl reload nginx
Настройка Gzip-сжатия
Для повышения производительности и снижения объёма передаваемых данных рекомендуется включить Gzip-сжатие. Для этого добавьте в файл конфигурации nginx следующие параметры:
gzip on;– включает Gzip-сжатие.gzip_comp_level 5;– устанавливает уровень сжатия (от 1 до 9).gzip_proxied any;– разрешает сжатие для всех запросов, прошедших через прокси.gzip_types ...;– определяет MIME-типы, для которых будет применяться сжатие.
Пример конфигурации:
gzip on;
gzip_comp_level 5;
gzip_proxied any;
gzip_types
text/html
text/plain
text/javascript
text/xml
text/css
application/javascript
application/xml
application/json
image/svg+xml;
Подключение по HTTPS
Прежде чем настраивать подключение пользователей «1С:Персонала» по HTTPS, вам нужно будет разрешить профиль Nginx HTTPS и затем настроить SSL. Эти настройки выходят за рамки нашей документации, но вы можете прочитать об этом в дополнительной литературе, например тут: How To Secure Nginx with Let's Encrypt on Ubuntu 20.04.
Для того чтобы обеспечить подключение пользователей по HTTPS, необходимо выполнить следующие условия:
- Ключ сертификата должен быть с пустым паролем.
- Сертификат сервера не должен быть самоподписанным.
- Корневой сертификат (CA) необходимо добавить в Trusted Roots (допустимо использовать самоподписанный сертификат). Это нужно сделать как на хосте сервера, так и на всех клиентских хостах.
Добавьте в файл конфигурации nginx, перед основными настройками сервера, следующие настройки перенаправления:
# HTTP to HTTPS Redirect Server
server {
listen 80;
server_name server.example.com;
return 301 https://$host$request_uri;
}
а ниже, в самих настройках сервера, замените стандартные настройки сервера:
listen 80;
server_name server.example.com;
на настройки прокси-сервера с защищенным соединением:
# HTTPS Proxy Server
server {
listen 443 ssl;
server_name server.example.com;
# SSL Configuration
ssl_certificate /etc/nginx/ssl/proxy.crt;
ssl_certificate_key /etc/nginx/ssl/proxy_free.key;
ssl_protocols TLSv1.2 TLSv1.3;
# Security Headers
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}
Установка и настройка на Windows
В качестве примера используется ОС Windows 10 Pro.
В тестовых целях вы можете установить и настроить nginx на Windows.
Чтобы установить nginx, выполните следующие действия:
- Скачайте дистрибутив nginx по этой ссылке: https://nginx.org/ru/download.html. Мы рекомендуем использовать основную версию (Mainline version).
- Разархивируйте дистрибутив в каталог, в котором будет находиться nginx.
Чтобы настроить взаимодействие с сервером, вам понадобится отредактировать файл конфигурации nginx conf\nginx.conf (ссылка).
Если для доступа пользователей к nginx вы собираетесь использовать защищенное соединение SSL, то полный путь к каталогу, в который вы поместите nginx, не должен содержать кириллицы.
Кроме того, при подключении по HTTPS нужно поменять пути к сертификату и ключу сертификата из примера выше для Linux на соответствующие для Windows, например:
ssl_certificate c:/app/nginx/proxy.crt;
ssl_certificate_key c:/app/nginx/proxy_free.key;
Чтобы проверить работоспособность сервера через внешний IP-адрес, выполните следующие действия:
-
Запустите файл nginx.exe.
-
Запустите браузер и введите в адресной строке:
http://server.example.com/maintenance/server/v1/heartbeat -
В случае успеха вы увидите стандартное сообщение сервера: