我想在我的服务器上设置 Squid 透明代理。但是,我还想运行 Apache。HTTP/HTTPS 应该在 Apache 和代理端口上运行。
所以说:
- Apache 在端口 80 上处理 HTTP 请求,在端口 443 上处理 HTTPS 请求
- 我应该有一个支持 HTTP 和 HTTPS 的代理。
问题:
- 我该如何设置上述内容?
- 如何配置任何接受代理服务器地址和端口的工具。通常工具只接受 1 个端口。我的代理是否会在 HTTP/HTTPS 的 2 个不同端口上运行?
答案1
squid 的标准端口是 3128。它支持此端口上的 HTTP、HTTPS 和其他协议。它还支持使用单独端口的透明 HTTP 代理模式。要使透明代理正常工作,您需要 NAT 规则将 Web 流量转发到代理。我设置 Squid 透明代理使用两个端口。
您的 Apache 服务器在 80 和 443 上没有冲突。请检查配置,以免缓存本地服务器。通常,您应该免除通过透明代理传递到本地服务器的连接。
编辑:要作为用户的透明代理运行,您需要配置防火墙以将所有不是来自 Squid 服务器的 Web 请求转发到 Squid 服务器。iptables
这是通过 DNAT 配置完成的。我使用 shorewall 构建防火墙并制定了如下规则。($SQUID 解析为我的 Squid 服务器的 IP 地址。)
HTTP(DNAT) loc dmz:$SQUID:3129 - - - !192.168.0.0/16
您可能还想将其他常用的 HTTP 端口转发到 squid。我将端口 81、82 和 8080 等转发到 squid。
你可能想要分发你的代理配置,正如我在在 Ubuntu 上设置 Squid 代理。这可以处理 HTTPS 以及 HTTP。