我正在运行本地http服务器和本地squid实例。本地http客户端打开一个连接到squid实例的套接字,这似乎可以正常工作。然后,我尝试通过发出以下http请求来隧道传输到本地http服务器:
CONNECT localhost:80 HTTP/1.1\r\n
产生响应头
Content-Language en
Content-Length 3612
Content-Type text/html;charset=utf-8
Date Thu, 21 Jun 2018 17:28:10 GMT
Mime-Version 1.0
Server squid/3.5.27
Vary Accept-Language
X-Squid-Error ERR_DNS_FAIL 0
,状态为503。 我还尝试连接到127.0.0.1,这会产生以下响应:
Content-Language en
Content-Length 3433
Content-Type text/html;charset=utf-8
Date Thu, 21 Jun 2018 17:35:16 GMT
Mime-Version 1.0
Server squid/3.5.27
Vary Accept-Language
X-Squid-Error ERR_CONNECT_FAIL 111
我的squid.conf看起来像这样:
http_port 3128
coredump_dir /var/spool/squid
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 1025-65535 # unregistered ports
acl CONNECT method CONNECT
acl any_host src all
acl all_dst dst all
http_access allow any_host
http_access allow all_dst
有没有其他方法可以告诉squid连接到本地主机?
答案 0 :(得分:0)
以某种方式,鱿鱼试图将localhost
解析为127.0.0.1
,最终导致连接失败。但是,指定[::1]
而不是localhost
可以达到预期效果。
答案 1 :(得分:0)
我发现是localhost
解析为[::1]
而不是127.0.0.1
解析的失败所在。
要绕过/etc/hosts/
,只需将以下内容添加到/etc/squid/hosts
:
127.0.0.1 localhost
然后在您的hosts_file /etc/squid/hosts
中squid.conf
。
当然可以将文件放在您想要的任何位置。