配置 squid 以处理相对 url
Configure squid to handle relative urls
我构建并安装了 squid 3.5.23 如下:
- ./configure --prefix=/usr/local/squid
- 全部
- 进行安装
Here是版本默认使用的squid.conf。我对文件做了最少的修改,使我的设置匿名:
forwarded_for delete
request_header_access Via deny all
request_header_access Cache-Control deny all
获得(远程)代理服务器 运行 后,我确认可以配置我的(本地)浏览器以通过它发送流量。然后我进入下一步,让我的路由器将所有来自我本地网络的流量发送到我的代理服务器:
iptables -t nat -A PREROUTING -s 192.168.11.0/24 -d ! 192.168.11.0/24 -p tcp -j DNAT --to-destination 100.200.30.40:3128
但是,我的所有请求都返回了来自 squid 的 400(BAD REQUEST)。在进一步调查中,我发现请求 headers 使用的是相对 URL(我的浏览器足够聪明,如果它知道它正在与代理服务器通信,它总是使用绝对 URL)。
我知道 HTTP 1.1 headers 需要有一个 Host
header,squid 可以使用它来确定它接收到的数据包的原始目的地。如何配置代理服务器以使用 header?我正在寻找相当于 httpd_accel_uses_host_header on
的 squid 3.5
运行 accelerator mode 中的鱿鱼修复了这个问题:
http_port 3128 accel
我构建并安装了 squid 3.5.23 如下:
- ./configure --prefix=/usr/local/squid
- 全部
- 进行安装
Here是版本默认使用的squid.conf。我对文件做了最少的修改,使我的设置匿名:
forwarded_for delete
request_header_access Via deny all
request_header_access Cache-Control deny all
获得(远程)代理服务器 运行 后,我确认可以配置我的(本地)浏览器以通过它发送流量。然后我进入下一步,让我的路由器将所有来自我本地网络的流量发送到我的代理服务器:
iptables -t nat -A PREROUTING -s 192.168.11.0/24 -d ! 192.168.11.0/24 -p tcp -j DNAT --to-destination 100.200.30.40:3128
但是,我的所有请求都返回了来自 squid 的 400(BAD REQUEST)。在进一步调查中,我发现请求 headers 使用的是相对 URL(我的浏览器足够聪明,如果它知道它正在与代理服务器通信,它总是使用绝对 URL)。
我知道 HTTP 1.1 headers 需要有一个 Host
header,squid 可以使用它来确定它接收到的数据包的原始目的地。如何配置代理服务器以使用 header?我正在寻找相当于 httpd_accel_uses_host_header on
运行 accelerator mode 中的鱿鱼修复了这个问题:
http_port 3128 accel