如何基于Content-Type在Nginx中配置条件生效的自定义403错误页
实现方案
可以实现,通过Nginx的map指令配合动态变量即可按响应Content-Type动态决定是否启用自定义403错误页。
完整配置示例
1. http块新增map映射规则
http { # 保留你原有的所有http配置不变,新增以下内容 map $sent_http_content_type $custom_403_page { default /forbidden.html; application/json ''; # 如有其他不需要自定义错误页的Content-Type,可按上述格式新增 } server { # 保留你原有的所有server配置不变,修改error_page配置如下 error_page 403 $custom_403_page; location = /forbidden.html { root /path/to/root/; internal; # 新增该配置,禁止外部直接访问错误页路径 } } }
配置说明
$sent_http_content_type是Nginx内置变量,对应最终返回给客户端的响应Content-Type值,静态资源、反向代理上游返回的响应都可以正常识别- 当响应Content-Type匹配到
application/json时,$custom_403_page变量赋值为空,此时error_page指令不会触发自定义页面跳转,Nginx直接返回默认403响应 internal配置可以限制错误页只能被Nginx内部重定向调用,避免用户直接访问该路径,安全性更高- 如果你原配置中的错误页文件名确实是
forebidden.html(比标准拼写多一个e),保持配置和实际文件名一致即可。
内容的提问来源于stack exchange,提问作者danihh1
相关产品推荐
相关产品推荐

