Назад | Перейти на главную страницу

Как перенаправить пользователей прокси FORWARD на веб-страницу с помощью mod_proxy - apache

Я довольно много искал решение, и большинство ответов относятся либо к proxypass (обратный прокси), либо не имеют отношения к делу.

Веб-браузеры конечных пользователей настроены на использование прокси-сервера Apache.

Я хочу перенаправить всех пользователей на отдельную веб-страницу (если возможно, на том же сервере).

Mod_rewrite не работает, так как запускается только тогда, когда пользователь пытается посетить прокси-сервер. Я хочу перенаправить пользователей, пытающихся получить доступ к внешним сайтам.

Текущая конфигурация проста:

/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>

Я думал заблокировать все запросы, а затем настроить страницу с пользовательской ошибкой, но не смог найти никаких примеров этой работы.

Я не пробовал выходные фильтры с прямым проксированием, но он работает с обратным проксированием, поэтому вы можете попробовать следующее:

#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);