Introducción
El módulo mod_proxy de Apache permite reenviar solicitudes a otro servidor utilizando las directivas ProxyPass y ProxyPassReverse. Sin embargo, en algunos casos, es posible que desee excluir ciertas URL del proxy. En este tutorial, le mostraré cómo excluir una URL de ProxyPass en Apache.
Apache mod_proxy es un módulo opcional para el servidor Apache HTTP que implementa una funcionalidad de proxy, puerta de enlace o almacenamiento en caché para el servidor. El módulo proporciona la capacidad de proxy para protocolos como AJP13, FTP, CONNECT (para SSL), HTTP/0.9, HTTP/1.0 y HTTP/1.1.]
El módulo mod_proxy de Apache proporciona la funcionalidad de proxy básica, mientras que el módulo mod_proxy_balancer y uno o más módulos equilibradores si se requiere equilibrio de carga. Además, otros módulos proporcionan una funcionalidad ampliada, incluido el almacenamiento en caché proporcionado por el módulo mod_cache y los módulos relacionados. El módulo mod_proxy_http, que requiere el servicio del módulo mod_proxy, proporciona la funcionalidad que se utiliza para las solicitudes HTTP y HTTPS, y admite HTTP/0.9, HTTP/1.0 y HTTP/1.1. Sin embargo, no proporciona ninguna capacidad de almacenamiento en caché.
El primer paso es identificar la URL que desea excluir del reenvío a través de un proxy. Para este tutorial, supongamos que queremos excluir la URL "/estática" del proxy.
Excluir URL en Apache ProxyPass
Apache Proxy envía solicitudes a los oyentes de back-end. En algunos casos, puede ser necesario ejecutar las URL para reenviar. Por ejemplo. tiene algo de contenido estático almacenado en "/var/www/html/static". La aplicación sirve contenido estático, cuyas URL comienzan con "/static". Quería servir todas las direcciones URL que comienzan con "/static" deben servirse directamente desde el directorio sin proxy.
Puede hacer esto agregando la siguiente configuración antes de la configuración principal de ProxyPass:
ProxyPass /static!
Alias "/static" "/var/www/html/static"
¡Los símbolos !
le dicen a Apache, no a las solicitudes de proxy que comienzan con la URL secundaria "/static". El Alias vincula las URL al directorio "/var/www/html/static".
Asegúrese de agregar la configuración anterior antes de la configuración de ProxyPass. Un host virtual de ejemplo se ve así:
<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>
Realice los cambios necesarios en la configuración del host virtual de Apache y reinicie el servicio de Apache. Para probar su configuración, acceda a la URL que excluyó del proxy, en este caso sería "/static". Si la configuración es correcta, debería ver el contenido de su sitio web, en lugar de ser reenviado al servidor backend.
Conclusión
En pocas palabras, el módulo mod_proxy de Apache también proporciona una opción para ejecutar URL reenviadas. Esto puede ser útil para servir contenido estático directamente desde el servidor web en lugar de enviarlo por proxy al servidor backend. En este tutorial, le hemos dado instrucciones con un ejemplo para excluir URL de ProxyPass en el servidor web Apache. Recuerde probar su configuración después de realizar cualquier cambio para asegurarse de que funciona como se espera.