如何使用 mod_proxy 将 FORWARD 代理用户重定向到网页 - apache

如何使用 mod_proxy 将 FORWARD 代理用户重定向到网页 - apache

我已经搜索了很多解决方案,大多数答案要么与 proxypass(反向代理)有关,要么不相关。

最终用户的 Web 浏览器配置为使用 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>

我正在考虑阻止所有请求,然后设置自定义错误页面,但找不到任何可行的示例。

答案1

我还没有尝试过使用正向代理的输出过滤器,但它可以与反向代理一起使用,因此您可能需要尝试以下操作:

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

相关内容