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

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

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

Как использовать Nginx в качестве обратного прокси
Как использовать 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, имя_сервера 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,

Summary

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