Введение
Модуль Apache mod_proxy позволяет пересылать запросы на другой сервер с помощью директив ProxyPass и ProxyPassReverse. Однако в некоторых случаях может потребоваться исключить определенные URL-адреса из прокси-сервера. В этом руководстве я покажу вам, как исключить URL-адрес из ProxyPass в Apache.
Apache mod_proxy — это дополнительный модуль для HTTP-сервера Apache, который реализует функции прокси, шлюза или кэширования для сервера. Модуль предоставляет возможность прокси для таких протоколов, как AJP13, FTP, CONNECT (для SSL), HTTP/0.9, HTTP/1.0 и HTTP/1.1.]
Модуль Apache mod_proxy обеспечивает базовые функции прокси, а модуль mod_proxy_balancer и один или несколько модулей балансировки, если требуется балансировка нагрузки. Кроме того, расширенная функциональность обеспечивается другими модулями, включая кэширование, предоставляемое модулем mod_cache и связанными модулями. Модуль mod_proxy_http, для которого требуется служба модуля mod_proxy, предоставляет функциональные возможности, используемые для прокси-запросов HTTP и HTTPS, с поддержкой HTTP/0.9, HTTP/1.0 и HTTP/1.1. Однако он не предоставляет никаких возможностей кэширования.
Первым шагом является определение URL-адреса, который вы хотите исключить из переадресации через прокси-сервер. Для этого руководства предположим, что мы хотим исключить URL-адрес «/static» из проксирования.
Исключить URL-адреса в Apache ProxyPass
Apache Proxy отправляет запросы внутренним слушателям. В некоторых случаях может потребоваться запустить пересылаемые URL-адреса. Например. у вас есть статический контент, хранящийся в "/var/www/html/static". Приложение обслуживает статический контент, URL-адреса которого начинаются с «/static». Вы хотите обслуживать все URL-адреса, начинающиеся с «/static», должны обслуживаться непосредственно из каталога без прокси.
Вы можете сделать это, добавив следующую конфигурацию перед основными настройками ProxyPass:
ProxyPass /static!
Alias "/static" "/var/www/html/static"
Символы !
они сообщают apache, а не прокси-запросам, начинающимся с суб-адреса "/static". Псевдоним привязывает URL-адреса к каталогу «/var/www/html/static».
Убедитесь, что указанная выше конфигурация добавлена до настройки ProxyPass. Пример виртуального хоста выглядит так:
<VirtualHost *:80>
ServerName example.com
ProxyPass /static!
Alias "/static" "/var/www/html/static"
<Directory "/var/www/html">
Require all granted
</Directory>
ProxyPreserveHost On
ProxyPass /http://127.0.0.1:8080/ProxyPassReverse /http://127.0.0.1:8080/</VirtualHost>
Внесите необходимые изменения в конфигурацию виртуального хоста Apache и перезапустите службу Apache. Чтобы проверить настройку, перейдите к URL-адресу, который вы исключили из прокси-сервера, в данном случае это будет «/static». Если конфигурация правильная, вы должны увидеть содержимое своего веб-сайта, а не перенаправленное на внутренний сервер.
Заключение
Суть в том, что модуль Apache mod_proxy также предоставляет возможность запускать перенаправленные URL-адреса. Это может быть полезно для обслуживания статического контента непосредственно с веб-сервера вместо проксирования его на внутренний сервер. В этом руководстве мы дали вам инструкции с примером, чтобы исключить URL-адреса из ProxyPass на веб-сервере Apache. Не забудьте проверить свою конфигурацию после внесения любых изменений, чтобы убедиться, что она работает должным образом.