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

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

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

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

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

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

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

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

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

Настройте 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 или же Примеры конфигурации.

Перейти к верхней кнопке