iptables 和 apache 导致“重定向过多”

iptables 和 apache 导致“重定向过多”

我在网关机器上运行着 iptables 和 apache。

1) 网关后面的所有机器都不应能够访问互联网。

2)如果他们尝试浏览任何其他网站,他们应该被自动重定向到另一个网站http://www.xyz.com(这也在我的控制之下)。

为了做到这一点,我在 iptables 中尝试了以下内容。

*nat
-A PREROUTING -i eth3 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 80

(redirect all browsing requests to port 80 on gateway machine itself)

在网关机器上运行的 Apache 服务器中,

in /etc/apache2/sites-available/default

RedirectMatch  .* http://www.xyz.com/

完成后,当我尝试从网关后面浏览任何站点时,都会出现错误。

在 Firefox 中 - “Firefox 已检测到服务器正在以永远无法完成的方式重定向此地址的请求。”

在 Chrome 中 - 错误 310 (net::ERR_TOO_MANY_REDIRECTS):重定向太多。

在 IE 中也会发生类似的事情。

看起来 iptables 和 RedirectMatch 相互协作,进入了递归循环。我该怎么做才能防止这种情况发生?

答案1

您可以将目标 Web 服务器的 IP 地址添加到您的 iptables 规则中:

-A PREROUTING -i eth3 -p tcp ! -d 1.2.3.4 -m tcp --dport 80 -j REDIRECT --to-ports 80

或者,如果您控制着 的服务器xyz.com,请将其托管在不同的端口上。

相关内容