我的 RedHat Linux 服务器上有一个非常奇怪的问题。我安装了一个 Squid 代理服务器,它对 WAN 地址运行良好。但是,当我尝试访问本地 MediaWiki 系统时,我得到了
The requested URL could not be retrieved
The following error was encountered: Unable to determine IP address from host name for ServerName
当我重新启动 squid 时,我可以访问这些本地地址大约 5 分钟,但随后又出现了同样的消息。现在我已验证我可以正常 ping ServerName,因此名称解析实际上不是问题。
我还将这些行添加到我的 squid.conf 中,我在网上找到的所有说明似乎都表明这应该可以解决问题。
acl ServerName dstdomain DomainName
always_direct allow ServerName
(注:为保护无辜者,名字均已更改)
然后我还补充道:
acl MyDomain src 192.168.0.1/255.255.255.192
never_direct deny MyDomain
结果相同(并且 aclParseIpData 发出了一些奇怪的消息,警告我我的网络掩码占用了我指定 IP 的一部分),我认为这确实是一个非常奇怪的消息。
答案1
正确的答案是修改我的 proxy.pac 和 wpad.dat 文件。而不是只说:
function FindProxyForURL(url,host)
{
return "PROXY 192.168.0.XX:3128; DIRECT";
}
相反,我必须对其进行修改,这样当机器发现它是本地机器的主机名而不是 URL 时,它们就不会尝试使用代理。isPlainHostName 函数运行完美。我使用的代码是:
function FindProxyForURL(url,host)
{
if(isPlainHostName(host))
return "DIRECT";
return "PROXY 192.168.0.XX:3128; DIRECT";
}
我只是不知道如何正确使用 .pac 文件将用户引导至本地地址。