
En el servidor Apache (Xampp), creé un proxy de reenvío para el filtrado de firewall que funciona bien, pero no entiendo cómo usar RewriteRule para redirigir una URL prohibida a una página de error personalizada.
Deseo redirigir la solicitud a un archivo html de error local presente en mi servidor para informar al cliente si la URL que solicita a mi proxy no está autorizada.
En el siguiente ejemplo puse solo la parte que no funciona (tengo otras RewriteRule para las URL permitidas):
Listen 192.168.0.100:3128
<VirtualHost 192.168.0.100:3128>
ServerName 192.168.0.100:3128
ProxyRequests On
ProxyVia On
<Proxy *>
# 1) If url is allowed (this part works well):
... some RewriteCond & RewriteRule ...
# 2) If url is not allowed by some RewriteCond:
RewriteRule ^ https://192.168.0.100/firewall/firewall_deny.html [R=302,L]
OR
RewriteRule ^ https://192.168.0.100/firewall/firewall_deny.html [P,L]
</Proxy>
</VirtualHost>
Cuando la URL está permitida (caso 1), el proxy funciona bien y Chrome recibe la página del sitio web solicitada. Pero en el caso de una URL que he prohibido (caso 2), no hay respuesta del proxy.
Probé muchas sintaxis diferentes que encontré, pero el navegador Chrome nunca recibe ninguna respuesta de mi servidor y solo muestra su página de error: "Este sitio no está disponible" con el error "ERR_TUNNEL_CONNECTION_FAILED".
Solo en el caso de un proxy directo (no estoy haciendo un proxy inverso), ¿es posible enviar al cliente un archivo html personalizado (o su URL)?
Gracias por cualquier ayuda
Editar el 23/10:
Este pequeño proxy funciona bien, pero lo único que no sé hacer es enviar una página de error al cliente cuando la URL está prohibida.
Es por eso que preguntaba si la RewriteRule utilizada en <Proxy *> para autorizar o no la conexión, también se puede usar para redirigir a una página de error, como podemos hacer en la configuración normal (no en el proxy). Algo como :
RewriteRule ^ https://192.168.0.100/path/to/firewall/firewall_deny.html [R=302,L]
Aparentemente, la redirección se realizó porque en Fiddler puedo ver la página de redirección 302 con la nueva URL, pero Chrome no parece recibirla.
También he probado cosas como:
Redirect permanent path/to/firewall/
Pero tampoco parece funcionar en esta configuración de proxy directo. Tal vez tengas que reescribir de alguna manera el encabezado o algo más, para enviar de regreso a Chrome la URL de la página de error, porque pasa por un túnel proxy.
Actualmente estoy intentando utilizar otras soluciones que se encuentran en ServerDefault, como ExtFilterDefine (mod_ext_filter.so) o Substitute (mod_substitute.so) sin éxito hasta el momento.