nginx 可通过 error_page 403 自定义拒绝页面,需配置 error_page 指令、location = /403.html { internal; }、确保文件存在且权限正确,并用 nginx -t 和 nginx -s reload 验证生效。

在 Nginx 中,当客户端请求被拒绝(如权限不足、目录禁止访问等)时,默认返回一个简陋的内置 403 页面。你可以通过配置 error_page 指令自定义这个拒绝页面,让用户体验更友好、信息更明确。
指定自定义 403 页面文件路径
在 server 或 location 块中添加 error_page 指令,将 403 状态码映射到你准备好的 HTML 文件:
- 确保你的自定义页面(例如
/usr/share/nginx/html/403.html)已存在且可被 Nginx 读取 - 在配置中写入:
error_page 403 /403.html; - 同时需配置 location 匹配该路径,保证能正常返回静态文件:
location = /403.html {
internal;
}
加internal是为了防止用户直接通过 URL 访问该页面
确保页面内容可被正确响应
自定义的 403 页面需要满足几点要求:
- 文件编码建议为 UTF-8,避免中文乱码
- HTML 中可包含简单样式或跳转链接,但不要依赖外部 CSS/JS(除非你额外配置静态资源路径)
- 如果使用相对路径引用资源(如图片),注意 Nginx 的 root 设置是否匹配
- 检查文件权限:Nginx 工作进程(如 www-data 或 nginx 用户)必须有读取权限
验证配置并重载服务
完成修改后务必验证语法并重载配置:
- 运行
nginx -t检查配置是否合法 - 执行
nginx -s reload或systemctl reload nginx生效新配置 - 手动触发 403(例如访问一个
deny all;的 location)确认页面是否正确显示
进阶:根据不同场景返回不同 403 页面
若需按条件区分拒绝原因(如 IP 被限、目录遍历拦截等),可结合 map 或 Lua 模块实现,但基础场景下统一 403 页面已足够。Nginx 默认不记录 403 的详细原因,如需审计,建议开启 access_log 并配合日志分析工具定位问题来源。











