Настройка обратного прокси
Обратный прокси-сервер – разновидность прокси-сервера, транслирующего клиентские запросы из внешней сети на один или несколько серверов, расположенных в рамках внутренней сети. Далее в статье мы расскажем, для чего он нужен и как его настроить при необходимости на примере веб-сервера Nginx.
Зачем нужен обратный прокси
Сценариев использования технологии может быть несколько. Рассмотрим основные:
- Сокрытие существования опрашиваемых им серверов, а также их характеристик.
- Защита от DoS и DDoS – для этого в связке с обратным прокси системные администраторы ставят программный брандмауэр.
- В качестве костыля – если на основном сайте отсутствует поддержка подключения через SSL, можно подключить обратный прокси-сервер с наличием аппаратного SSL-ускорителя.
- Использование в качестве балансировщика нагрузок – такой сервер может обеспечить равномерное распределение нагрузки между двумя, тремя и более серверами.
- Снижение нагрузки на основной сервер за счет размещения на обратном прокси динамического и статического содержимого сайта. Этот метод часто называют акселерацией.
- Компрессия данных с целью сокращения времени загрузки.
- Может применяться для безопасного и удобного A/B-тестирования.
Теперь вы знаете, для чего нужен обратный прокси. Перейдем к практике.
Использование Nginx в качестве обратного прокси-сервера
Первым делом открывайте файл конфигурации блока сервера домена. В нем необходимо указать расположение и прокси-сервер:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:7070; } }
URL сервера, который нужно проксировать, устанавливают с proxy_pass директивы proxy_pass. Это позволяет использовать HTTP или HTTPS:
- в качестве протокола;
- домена;
- IP-адреса;
- необязательного порта;
- унифицированного идентификатора ресурса в качестве адреса.
Представленная выше конфигурация дает команду Nginx пересылать все запросы в /app прокси-серверу по адресу http://127.0.0.1:7070. Вы можете поменять на нужный вам айпи. Предоставлен только ради ознакомления.
Файлы с серверными блоками хранятся в каталоге /etc/nginx/sites-available – если вы пользуетесь Ubuntu или Debian, а также в /etc/nginx/conf.d, если используете CentOS.
Для наглядной иллюстрации работы proxy_pass директивы location и proxy_pass рассмотрим простой пример:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:6000/wordpress/; } }
Когда посетитель сайта обратится к http://example.com/blog/my-post, веб-сервер Nginx ретранслирует данный запрос по прокси на http://node1.com:6000/wordpress/my-post.
Если адрес проксируемого сервера содержит унифицированный идентификатор ресурса, ( /wordpress/ ), URI запроса, транслируемый на проксируемый сервер, заменяется URI, который указан в директиве. В случае, когда адрес прокси-сервера указан без унифицированного идентификатора ресурса, полный URI запроса передается на прокси-сервер.
Как настроить Nginx в качестве обратного прокси для прокси-сервера без HTTP
Для этого используется одна из четырех директив:
- fastcgi_pass — обратный прокси к серверу FastCGI.
- uwsgi_pass — обратный прокси к серверу uwsgi.
- scgi_pass — обратный прокси к серверу SCGI.
- memcached_pass — обратный прокси к серверу Memcached.
Например, очень часто Nginx используют в качестве обратного прокси-сервера PHP-FPM:
server { # ... other directives location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
При изменении файла конфигурации обязательно перезапускайте веб-сервер Nginx, чтобы изменения вступили в силу. Если остались вопросы, обращайтесь к нашим специалистам через лайв чат.