Squid TCP_DENIED/403内部错误页无Logo问题排查求助
解决Squid禁止页面缺少Logo的问题
嘿,看你的日志和描述,这问题我熟!Squid自己把加载内部Logo的请求给拦了,才导致错误页光秃秃的。咱们一步步来搞定:
问题根源
从你贴的日志 TCP_DENIED/403 4187 GET http://srv1.foo.bar:3128/squid-internal-static/icons/SN.png - HIER_NONE/- text/html 就能看明白——Squid在尝试加载自带的静态图标时,被自己的访问规则拒绝了。Ubuntu 18.04默认的Squid配置比较保守,没给自身的内部静态资源开访问权限。
修复步骤
1. 修改Squid配置
先打开主配置文件:
sudo nano /etc/squid/squid.conf
找到http_access deny all这一行(这是最后一条拒绝规则),在它前面加一段规则,允许Squid访问自己的静态资源:
# 允许访问Squid内部静态资源路径 acl squid_internal_assets urlpath_beg /squid-internal-static/ # 允许本地主机访问这些资源 http_access allow localhost squid_internal_assets http_access allow to_localhost squid_internal_assets
localhost和to_localhost是Squid默认就有的ACL,已经涵盖了服务器自身的访问,不用额外定义域名,这样更稳妥。
2. 验证配置并重启
先检查配置有没有语法错误,避免重启失败:
sudo squid -k parse
如果没报错,就重启Squid服务:
sudo systemctl restart squid
3. 测试效果
现在让被禁网的用户再触发一次错误页,应该就能看到Squid的Logo了。要是还不行,排查下这两点:
- 本地能不能解析
srv1.foo.bar:跑个ping srv1.foo.bar看看 - 检查静态资源的权限:Ubuntu 18.04里这些图标默认在
/usr/share/squid/icons/,确保proxy用户(Squid默认运行用户)有读取权限,用ls -l /usr/share/squid/icons/就能看
为啥默认会出这问题?
Ubuntu 18.04的默认Squid配置主打一个安全优先,只放行必要的访问请求,没默认开放自身内部静态资源的访问权限。当错误页尝试通过服务器域名加端口访问这些资源时,就被Squid的访问控制给拦住了,自然看不到Logo。
内容的提问来源于stack exchange,提问作者AxelF
相关产品推荐
相关产品推荐

