我已经搜索了很多解决方案,大多数答案要么与 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);