Что такое обратный прокси?
Прокси-сервер действует как посредник между клиентом и другим сервером.
Он получает ресурсы с сервера, к которому вы хотите подключиться, и отправляет его вам для просмотра. Обратный прокси-сервер работает так же, за исключением того, что роль меняется на противоположную.
Когда вы запрашиваете информацию с сервера, обратный прокси-сервер получает запрос и отправляет его на соответствующий внутренний сервер.
Это позволяет системному администратору использовать сервер для нескольких приложений, а также обеспечивать более плавный поток трафика между клиентом и сервером.
Теперь давайте сделаем более общий вариант настройки 🙂
Преимущества обратного прокси
В зависимости от вашего приложения у вас могут быть разные варианты использования обратного прокси.
- Обратный прокси-сервер позволяет запускать несколько приложений на одном сервере. Если на одном сервере запущено несколько приложений, все они не могут одновременно прослушивать порт 80 или 433. Обратный прокси-сервер позволяет настроить обратный прокси-сервер так, чтобы при необходимости перенаправлять трафик отдельным приложениям.
- Балансировка нагрузки – если у вас несколько серверов, на которых запущено одно приложение, вы можете использовать обратный прокси-сервер для равномерного распределения трафика на каждом сервере.
- Брандмауэр веб-приложений – вы можете использовать обратный прокси-сервер, чтобы скрыть свое приложение от общественности, а также отфильтровать спам-IP или защитить от DDOS-атаки.
- Простая регистрация и аудит – поскольку весь входящий трафик управляется обратным прокси-сервером, проще регистрировать и отслеживать поток трафика.
Настройка Nginx в качестве обратного прокси
Настройка Nginx в качестве обратного прокси
Для начала стоит сказать, что можно воспользоваться услугами прокси, не настраивая все самому.
Представлено очень большое количество решений, среди которых можно выделить https://youproxy.ru/russian-proxy, не зависимо от целей, которые вы преследуете, используя прокси-сервера.
Чтобы настроить 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 timeout – позволяет установить значение тайм-аута для отправки и получения прокси-запросов.
Например:
proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90;
proxy_buffers – это позволяет Nginx временно хранить ответ прокси-сервера и отправлять его на сервер запросов только после того, как прокси-сервер завершит ответ.
Например:
proxy_buffers 32 4k;
proxy_buffering off;
Резюме
Как видите, Nginx – это полноценный обратный прокси-сервер
Самое приятное в нем то, что его конфигурация проста, проста в использовании и все же позволяет масштабироваться для более сложных сценариев.
Для получения более подробной информации вы можете ознакомиться с документацией по прокси-модулю Nginx или примерами конфигурации.
- Установка Nginx на FreeBSD
- Как ограничить размер загрузки файлов в Nginx
- Как переопределить тип контента на веб-сервере Nginx
Кибербезопасность с Nginx
- ? Советы и рекомендации по обеспечению безопасности вашего веб-сервера Nginx
- Простая защита от хотлинков реализована в nginx
- Как включить HTTP / 2 в Nginx
- Как легко включить TLS 1.3 в Nginx на Ubuntu 18.10, 18.04, 16.04, 14.04
- Как легко включить TLS 1.3 в Nginx на Ubuntu 18.10, 18.04, 16.04, 14.04
- Как включить только TLS 1.2 только на веб-сервере Nginx
- Как создать самоподписанный сертификат SSL для Nginx на Ubuntu 18.04
- Как контролировать кэш в Nginx
- Nginx перенаправляет с HTTP на HTTPS
- Как настроить балансировщик нагрузки в Nginx с минимальным подключением
- Как включить TLS 1.3 в Nginx, Cloudflare
- Naxsi Waf Nginx
- Защитить Nginx от Clickjacking с помощью X-FRAME-OPTIONS
- nginx: error while loading shared libraries: libpcre.so.1