squid中提示如下错误:
HTTP/1.0 403 Forbidden
X-Squid-Error: ERR_ACCESS_DENIED 0
排查方法:
1.初步判断该错误码,应该是在访问squid时进行acl 校验时被断开的。
2.因此,需要打开acl校验的相关代码的debug信息,在squid代码中src/http.c
3.在http.c文件开始处可以找到如下注释
DEBUG: section 33 Client-side Routine
4.于是需要打开squid.conf中的 debug_options 选项,配置如下:
debug_options 33,9
执行
squid -k reconfigure
5.再次查看日至cache.log,看到类似如下信息
2012/03/11 15:10:27| The request GET HTTP://www.lb.com/test.gz is DENIED, because it matched 'localnet'
2012/03/11 15:10:27| Access Denied: HTTP://www.lb.com/test.gz
2012/03/11 15:10:27| AclMatchedName = localnet
2012/03/11 15:10:27| Proxy Auth Message = <null>
2012/03/11 15:10:27| clientSendHeaders: FD 14 'HTTP://www.lb.com/test.gz'
2012/03/11 15:10:27| clientBuildReplyHeader: Error, don't keep-alive
6.问题定位了,再打开squid.conf,查找,localnet的acl,如下
对应localnet的http_access设置如下:
而我是用curl访问的squid:
127.0.0.1不在localnet中,所以会被
http_access deny all
这行给deny掉。
因此,要在上面加上http_access allow localhost,然后再执行 squid -k reconfigure 。
最后,再次curl通过127.0.0.1 即可成功访问到squid。