squid 代理覆盖了我的主机头,我该怎么办?

squid 代理覆盖了我的主机头,我该怎么办?

我在使用 squid 时遇到以下问题:

一些客户端通过 squid 代理同时访问 62 个服务器。所有服务器都具有相同的主机名 (www.example.com),但具有不同的公共 IP(123.123.123.2 至 123.123.123.63)。服务器所有者使用一种 DNS 轮询。

我只能访问 squid 服务器和客户端。仅允许通过代理 IP 连接服务器。

没有代理,我只需发送一个请求来从 http//123.123.123.5/dataforme 加载数据,但我发送了主机头“www.example.com”。这样就正常工作了。

但是现在使用 squid 作为非缓存代理,这不再可能了。Squid 会覆盖已发送的请求主机标头。这样一来,目标服务器就不知道要传送什么数据,因为主机标头未正确传输。

我设置

url_rewrite_host_header off

但这没有任何效果。似乎只有在使用 squid 作为重定向器时才使用此选项。这不是我所做的。

如果没有其他站点可以获取,则以下操作将起作用:

header_access Host deny all
header_replace Host www.example.com

但当我这样做时,每个请求都会获得 www.example.com 主机标头。然后就无法再访问其他网站了。

我能做些什么?

在此先感谢您的帮助!

答案1

标准 Squid 安装不会这样做,除非出现一些错误的指令。如果您使用的是标准版本,请从头开始重新配置。如果是自定义编译,您应该检查代码和编译选项。

答案2

将这些行添加到您的 squid 配置中。让我们看看是否有帮助。

request_header_access Referer deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
forwarded_for off

相关内容