Помимо Apache, Nginx является самым популярным доступным веб-сервером. Помимо веб-сервера, его также можно использовать в качестве балансировщика нагрузки или обратного прокси-сервера. В этом уроке Quantrimang.com покажет вам, как использовать Nginx в качестве обратного прокси.
Что такое обратный прокси?
Прокси -сервер действует как посредник между клиентом и другим сервером. Прокси-сервер получает ресурсы с сервера, к которому вы хотите подключиться, и отправляет их вам для просмотра. Обратный прокси-сервер работает таким же образом, за исключением того, что роли поменялись местами. Когда вы запрашиваете информацию с сервера, обратный прокси-сервер удерживает запрос и отправляет его на соответствующий серверный сервер. Это позволяет системным администраторам использовать сервер для нескольких приложений, а также обеспечивает более плавный поток трафика между клиентом и сервером.

Преимущества обратных прокси
В зависимости от вашего приложения у вас могут быть разные варианты использования обратного прокси.
- Обратный прокси-сервер позволяет запускать несколько приложений на одном сервере . Если на одном сервере работает несколько приложений, они не могут одновременно «прослушивать» порт 80 или 433. С помощью обратного прокси-сервера вы можете его настроить. при необходимости перенаправлять трафик на отдельные приложения.
- Балансировка нагрузки . Если у вас есть несколько серверов, на которых работает одно и то же приложение, вы можете использовать обратный прокси-сервер для равномерного распределения трафика на каждый сервер.
- Брандмауэр веб-приложений . Вы можете использовать обратный прокси-сервер, чтобы скрыть свое приложение, а также для фильтрации спам-IP-адресов или защиты от DDOS-атак .
- Простота регистрации и аудита . Поскольку весь входящий трафик управляется обратным прокси-сервером, проще регистрировать и отслеживать потоки трафика.
Настройте Nginx в качестве обратного прокси-сервера.
Чтобы настроить Nginx в качестве обратного прокси-сервера, в статье будет использоваться параметр proxy_pass в файле конфигурации Nginx.
Примечание . В этом руководстве предполагается, что вы обладаете некоторыми знаниями о Nginx и установили и настроили Nginx на своем сервере.
В большинстве случаев использования Nginx будет интерфейсным сервером, «прослушивающим» порт 80 (HTTP) или 443 (HTTPS) на предмет входящих запросов. Поскольку порт 80 или 443 может «прослушивать» только один сервис, вашему приложению придется «прослушивать» другой порт, например порт 8081. Самая простая конфигурация будет выглядеть так:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Это означает, что все запросы к myapp.com через порт 80 будут перенаправлены на порт 8081.
Расширенные настройки
Помимо директивы proxy_pass , существует несколько других директив, которые вы можете использовать для более расширенной настройки.
- proxy_set_header — позволяет вам установить заголовок для отправки в фоновое приложение. Например, см. следующую конфигурацию:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Вы можете настроить необходимые заголовки прокси-сервера для передачи приложению, сообщить ему IP-адрес запроса и удаленный адрес, а затем вывести правильный контент на запрашивающий веб-сайт.
- таймаут прокси — позволяет установить значение таймаута для отправки и получения запросов прокси. Например:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
- proxy_buffers — это позволяет Nginx временно удерживать ответ прокси-сервера и отправлять его на запрашивающий сервер только после того, как прокси-сервер завершит ответ. Например:
proxy_buffers 32 4k;
Если ваше приложение отправляет большое количество файлов, вы можете отключить proxy_buffers:
proxy_buffering off;
Как видите, Nginx — это обратный прокси-сервер, который имеет множество применений. Самый большой плюс в том, что он прост в настройке, удобен в использовании и при этом позволяет масштабироваться в более сложных сценариях. Для получения более подробной информации вы можете просмотреть документацию по прокси-модулю Nginx (по адресу https://nginx.org/en/docs/http/ngx_http_proxy_module.html) или примеры конфигурации (по адресу https://www.nginx.com/resources/wiki). /start/topics/examples/full/).
Надеюсь, вы добьетесь успеха.