Squid代理配置deny_info后如何显示自定义错误页面?
Squid自定义错误页不显示问题解决
问题描述
我配置了以下ACLs:
acl mortales src "/etc/squid/listas/mortales" acl bloquear url_regex "/etc/listas/bloqueo" http_access allow mortales !bloqueo error_directory /usr/share/squid/errors/en/ deny_info ERR_ACCESS_DENIED mortales
当前问题:Squid已成功拦截黑名单站点,但未显示Squid自定义错误页面,仅展示浏览器自带的通用错误页面。已知新版Firefox等浏览器会优先显示自身通用错误页而非Squid的自定义错误页,希望能强制显示Squid代理的错误页面。
解决方案
调整Squid响应状态码:新版浏览器会自动替换403等标准状态码对应的页面,可改用Squid自定义的非标准状态码,比如493。修改配置:
deny_info 493 ERR_ACCESS_DENIED mortales同时确保
error_directory目录下存在对应493状态的错误页文件,若没有可复制现有403页面文件并重命名为493,按需修改内容。添加响应头强制浏览器使用自定义页:在Squid配置中加入以下指令,阻止浏览器猜测响应内容类型:
error_header X-Content-Type-Options nosniff关闭浏览器友好错误页功能:以Firefox为例,在
about:config中搜索browser.xul.error_pages.enabled并设置为false,此方法需逐个客户端配置,适合小规模场景。验证Squid基础配置正确性:
- 确认
error_directory路径正确,且Squid进程拥有该目录及文件的读取权限; - 检查
ERR_ACCESS_DENIED对应文件存在且内容完整; - 修改配置后重启Squid服务:
systemctl restart squid
- 确认
内容的提问来源于stack exchange,提问作者Morbo Morbo
相关产品推荐
相关产品推荐

