Nginx в качестве проксирующего фронтенда Apache
Nginx и Apache – очень мощные и продуктивные серверы. В настоящее время Apache является веб-сервером №1 для размещения сайтов. Обретая популярность с момента выхода, веб-сервер Nginx на данный момент занимает второе место в рейтинге веб-серверов для динамических сайтов. Причины популярности этих серверов ясны: Apache широко известен благодаря своей мощности, а Nginx – благодаря скорости. Тем не менее, оба сервера имеют недостатки: Apache занимает много памяти сервера, а Nginx который отлично справляется со статическими файлами зависит от php-fpm или аналогичных модулей для динамического контента. Однако эти два веб-сервера можно объединить для большего эффекта, используя Nginx как фронтенд для статического контента, а Apache – как бэкэнд для динамического.
Хочу рассказать об одной полезной возможности nginx, которую регулярно использую в своих проектах. Речь пойдет о настройке проксирования запросов на удаленный сервер с помощью nginx и директивы proxy_pass. Я приведу примеры различных настроек и расскажу, где сам использую данный модуль популярного веб сервера.
Немного расскажу своими словами о том, как работает модуль ngx_http_proxy_module. Именно он реализует весь функционал, о котором пойдет речь. Допустим, у вас в локальной или виртуальной сети есть какие-то сервисы, не имеющие прямого доступа из интернета. А вы хотите таковой иметь. Можно пробрасывать нужные порты на шлюзе, можно что-то еще придумывать. А можно сделать проще всего - настроить единую точку входа на все свои сервисы в виде nginx сервера и с него проксировать различные запросы к нужным серверам. Из плюсов, которые считаю наиболее полезными, отмечу 2:
- Без проблем можете настроить https доступ к сервисам, при этом совершенно не трогая эти сервисы. Вы получаете и используете сертификаты на nginx сервере, используете https соединение с ним, а сам nginx уже передает информацию на сервера со службами, которые могут работать по обычному http и знать не знают о https
- Вы очень легко можете менять адреса, куда проксируете запросы. Допустим у вас есть сайт, его запросы проксируются на отдельный сервер. Вы подготовили обновление или переезд сайта. Отладили все на новом сервере. Теперь вам достаточно на сервере nginx изменить адрес старого сервера на новый, куда будут перенаправляться запросы. И все. Если что-то пойдет не так, можете оперативно вернуть все обратно
Полезные ссылки
Проксирование запросов в nginx с помощью proxy_passNGINX + Apache
Настройка NGINX