核心是配置error_page 403 /403.html并单独设置location = /403.html { internal; root /usr/share/nginx/html; },确保错误页不被deny规则拦截且仅内部可访问,同时提供权限正确的静态html文件。

在 Nginx 中,对受限 IP 显示自定义友好拒绝页面,核心是结合 deny 指令与 error_page 机制,并确保静态页面能被正确访问(不被限制逻辑拦截)。
配置 IP 限制并触发 403 错误
在 server 或 location 块中使用 deny 和 allow 控制访问。Nginx 按顺序匹配,遇到匹配的 deny 就返回 403:
- 先写
allow白名单(可选),再用deny all拒绝其余;或直接deny特定 IP/网段 - 确保
deny所在作用域覆盖目标请求路径,比如放在server块顶层,或嵌套在location /中 - 注意:若同时用了其他模块(如
ngx_http_access_module以外的限流模块),确认最终返回的是标准 403 状态码
指定自定义 403 页面路径
用 error_page 403 将错误重定向到本地静态页,避免暴露默认 Nginx 提示:
- 添加
error_page 403 /403.html;(路径以/开头表示相对于 root 的 URI) - 确保该 URI 有对应 location 处理,且不被 deny 规则拦截——推荐单独配一个 location,允许所有用户访问错误页:
internal;
root /usr/share/nginx/html;
}
internal 表示仅内部跳转可访问,防止用户直接请求该 URL 绕过权限检查。
准备友好的 HTML 页面内容
将自定义页面(如 /usr/share/nginx/html/403.html)存为纯静态文件:
- 内容简洁友好,例如:“抱歉,您的访问暂不受支持。如有疑问,请联系管理员。”
- 可加入简单样式(内联 CSS)、图标或公司 logo,但避免外链资源(JS/CSS CDN),防止因网络问题导致页面空白
- 确保文件权限为 Nginx 工作进程可读(如
nginx:nginx用户拥有读取权)
验证配置并重载服务
修改后务必验证语法并平滑重载:
- 运行
nginx -t检查配置是否合法 - 执行
nginx -s reload生效新规则 - 用受限 IP(如本机 curl -H "X-Real-IP: 192.168.1.100" http://your-site/)测试是否返回自定义页面,状态码仍为 403











