Como redirecionar os usuários do proxy FORWARD para a página da Web usando o mod_proxy - apache

3

Eu pesquisei bastante por uma solução e a maioria das respostas refere-se ao proxypass (proxy reverso) ou não é relevante.

Os navegadores da Web dos usuários finais estão configurados para usar o servidor proxy Apache.

Eu quero redirecionar todos os usuários para uma página da Web individual (no mesmo servidor, se possível).

O Mod_rewrite não funciona, pois é acionado somente quando um usuário tenta visitar o servidor proxy. Quero redirecionar os usuários que tentam acessar sites externos.

A configuração atual é simples:

/var/httpd/conf.d/proxy.conf:

<VirtualHost *:*>
    ProxyRequests On
    ProxyVia On

    <Proxy *>
        Order deny,allow
        Deny from all
        Allow from 172.0.0.0/21
    </Proxy>
</VirtualHost>

Eu estava pensando em bloquear todas as solicitações e, em seguida, definir uma página de erro personalizada, mas não consigo encontrar nenhum exemplo disso.

    
por AirCombat 22.04.2015 / 12:15

1 resposta

0

Eu não tentei filtros de saída com proxy de reencaminhamento, mas funciona com proxy reverso, então você pode querer tentar o seguinte:

#add this outside of any VirtualHost tags
ExtFilterDefine proxiedcontentfilter mode=output cmd="/usr/bin/php /var/www/proxyfilter.php"

#add this in your VirtualHost tag
SetOutputFilter proxiedcontentfilter

In proxyfilter.php have some code like the following:

#!/usr/bin/php
<?php
$html = file_get_contents('php://stdin');
#update this if-condition to match any non-internal hostnames
if ($_SERVER['HTTP_HOST'] != 'www.example.com') {
    header('Location: http://localserver/message_to_display.html');
    $html = '';
}

file_put_contents('php://stdout', $html);
    
por 22.04.2015 / 16:43