错误码:
- 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 选项,配置如下:
执行
5.再次查看日至cache.log,看到类似如下信息
- 2012/03/11 15:10:27| The request GET is DENIED, because it matched 'localnet'
- 2012/03/11 15:10:27| Access Denied:
- 2012/03/11 15:10:27| AclMatchedName = localnet
- 2012/03/11 15:10:27| Proxy Auth Message =
- 2012/03/11 15:10:27| clientSendHeaders: FD 14 ''
- 2012/03/11 15:10:27| clientBuildReplyHeader: Error, don't keep-alive
6.问题定位了,再打开squid.conf,查找,localnet的acl,如下
- acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
- acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
- acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
对应localnet的http_access设置如下:
- http_access allow localnet
- # And finally deny all other access to this proxy
- http_access deny all
而我是用curl访问的squid:
- curl -x 127.0.0.1:8080 -svo /dev/null
127.0.0.1不在localnet中,所以会被
http_access deny all
这行给deny掉。
所以要在上面加上http_access allow localhost,
然后在squid -k reconfigure
最后,再次curl通过127.0.0.1也可以成功访问到squid
阅读(11371) | 评论(0) | 转发(0) |