![使用 IPtables 防止 squid 转发循环](https://linux22.com/image/611496/%E4%BD%BF%E7%94%A8%20IPtables%20%E9%98%B2%E6%AD%A2%20squid%20%E8%BD%AC%E5%8F%91%E5%BE%AA%E7%8E%AF.png)
我有一个网络应用程序,我想限制文件上传大小。
我想尝试使用 squid 来实现这一点,通过它的指令 request_body_size_max。
我的 Web 服务器在端口 8080 上运行,并且在同一台服务器 (Ubuntu 12.04 LTS) 上安装了 squid 3.1.19。服务器在 Amazon 的 EC2 上运行,如果这有什么不同的话。
squid.conf 包含:
http_port 3128 transparent
我添加到IPTables:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 3128
当我访问网络服务器时,squid 日志中的结果是:
Forwarding loop detected.
我需要做什么来防止这种情况发生?谢谢...
答案1
问题是当 squid 尝试连接到 Web 服务器(在端口 8080 上)时,它的请求也会重定向到自身。您必须限制 REDIRECT 规则的范围(例如基于传入接口)。
如果您的服务器上的外部接口是 eth0,请按如下方式更改规则:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 3128
更新:再想想,我好像错了。本地 (127.0.0.1) 流量不会经过 PREROUTING 链。
您如何告诉 squid 使用哪个上游 Web 服务器?