Как использовать Nginx в качестве обратного прокси

с обратным прокси-сервером

Помимо Apache, самым популярным веб-сервером является Nginx. Помимо того, что он является веб-сервером, он также может использоваться как балансировщик нагрузки или обратный прокси-сервер. В этом уроке мы покажем вам, как можно использовать Nginx в качестве обратного прокси.

Что такое обратный прокси?

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

обратный прокси-иллюстрация

Преимущества обратного прокси

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

  • Обратный прокси-сервер позволяет запускать несколько приложений на одном сервере. Если на одном сервере запущено несколько приложений, все они не могут одновременно прослушивать порт 80 или 433. С обратным прокси-сервером вы можете настроить обратный прокси-сервер для перенаправления трафика на отдельные приложения по мере необходимости.
  • Балансировка нагрузки. Если у вас есть несколько серверов, на которых запущено одно и то же приложение, вы можете использовать обратный прокси-сервер для равномерного распределения трафика между каждым сервером.
  • Брандмауэр веб-приложений. Вы можете использовать обратный прокси-сервер, чтобы скрыть свое приложение от публики, а также отфильтровать IP-адрес спама или защитить себя от DDOS-атаки.
  • Простая регистрация и аудит. Поскольку весь входящий трафик управляется обратным прокси-сервером, проще регистрировать и контролировать поток трафика.

Настройка Nginx в качестве обратного прокси

Чтобы настроить Nginx в качестве обратного прокси, мы будем использовать параметр proxy_pass в файлах конфигурации Nginx.

Примечание. В этом руководстве предполагается, что вы знакомы с Nginx и уже установили и настроили Nginx на своем сервере.

В большинстве случаев Nginx будет внешним сервером, который будет прослушивать порт 80 (HTTP) или 443 (HTTPS) для входящих запросов. Поскольку порт 80 или 443 может прослушивать только одна служба, ваше приложение должно будет прослушивать другой порт, например порт 8081. Простейшая конфигурация будет примерно такой:

Это означает, что все входящие запросы к myapp.com через порт 80 будут перенаправлены на порт 8081.

Advanced Setup

Помимо директивы proxy_pass, есть несколько других директив, которые вы можете использовать для более сложной настройки.

proxy_set_header - позволяет установить заголовок для отправки в фоновое приложение. Например, см. Следующую конфигурацию:

Вы можете установить необходимый заголовок прокси-сервера для передачи приложению, чтобы оно знало IP-адрес и удаленный адрес запроса и выводило правильный контент для сайта запроса.

Тайм-аут прокси - позволяет установить значение тайм-аута для отправки и получения запросов прокси. Например:

proxy_buffers - это позволяет Nginx временно удерживать ответ проксируемого сервера и отправлять его на сервер запросов только после того, как проксируемый сервер закончит отвечать. Например:

Если ваше приложение собирается отправить большой кусок файла, вы можете отключить proxy_buffers:

Резюме

Как видите, Nginx - это способный обратный прокси-сервер. Самое лучшее в нем то, что его конфигурация проста, удобна в использовании и, тем не менее, позволяет выполнять масштабирование для более сложных сценариев. Для получения более подробной информации вы можете ознакомиться с документацией по модулю прокси Nginx или примерами конфигурации.

Изображение предоставлено: обратный прокси, обратный прокси