Установка и настройка обратного прокси-сервера nginx
В качестве примера мы будем использовать прокси-сервер nginx. Вы можете использовать любой другой обратный прокси-сервер (reverse proxy).
Установка и настройка на Linux
В качестве примера используется ОС Ubuntu 20.04.
Установка
Чтобы установить nginx, выполните следующие действия:
-
Запустите терминал.
-
Войдите как пользователь root:
sudo -i -
Чтобы установить nginx, выполните следующие команды:
apt update
apt install nginx
Настройка
Чтобы настроить nginx, выполните следующие действия:
-
Проверьте, включен ли брандмауэр:
ufw statusСообщение «Состояние: неактивен» говорит о том, что брандмауэр выключен. В этом случае мы настоятельно рекомендуем его включить. Для этого выполните следующие команды:
ufw allow ssh
ufw enable
systemctl enable ufw
systemctl 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/default
rm /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 upgrades
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# Upstream servers
upstream 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 Location
location / {
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 Location
location /ide {
allow 10.70.3.0/24; # Adjust to your trusted IP range
deny 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 connections
proxy_read_timeout 86400;
proxy_send_timeout 86400;
proxy_connect_timeout 86400;
# Disable buffering for WebSockets
proxy_buffering off;
}
# Debug Location
location /debug {
allow 10.70.3.0/24; # Adjust to your trusted IP range
deny 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 Timeouts
proxy_read_timeout 86400;
proxy_send_timeout 86400;
proxy_connect_timeout 86400;
}
# Logging
access_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В случае успеха вы увидите стандартный ответ сервера: