一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 如何在 Server 块中配置自定义的 403 与 500 错误页面重定向

时间:2026-08-17 11:58:48 编辑:袖梨 来源:一聚教程网

Nginx server块中配置403和500错误页面需用error_page指令内部映射至本地HTML文件,保持原状态码;须配合location块放行路径(如location = /error/403.html { }),文件须置于root目录下且权限正确,避免绝对路径与外部资源依赖。

在 Nginx 的 server 块中配置自定义 403 和 500 错误页面,关键不是“重定向”(即 302 跳转),而是用 error_page 指令将错误响应内部映射到本地静态 HTML 文件,并确保该文件能被正确返回。

明确 error_page 的作用机制

error_page 不是 HTTP 重定向,而是 Nginx 内部的响应替换:当发生对应状态码(如 403 或 500)时,Nginx 会停止原请求处理流程,改而返回你指定的页面内容,状态码仍保持原值(仍是 403 或 500)。这是符合 HTTP 规范且对 SEO/调试友好的做法。

基础配置写法(推荐相对路径)

server 块内添加如下指令:

  1. error_page 403 /error/403.html;
  2. error_page 500 502 503 504 /error/50x.html;

这两行表示:遇到 403 错误时返回 /error/403.html;遇到任意一种 5xx 错误时统一返回 /error/50x.html。路径是相对于 root 指令所设的根目录的。

必须配套 location 块放行错误页

仅写 error_page 不够——Nginx 需要能正常响应这个路径,否则可能触发二次错误。需显式声明:

  1. location = /error/403.html { }
  2. location = /error/50x.html { }

如果 root 是 /usr/share/nginx/html,那这两个 HTML 文件就得放在 /usr/share/nginx/html/error/ 下,且 Nginx 进程有读取权限。不需要额外加 rootalias,只要路径与 root 匹配即可。

避免常见陷阱

  1. 别用绝对路径写 error_page(如 error_page 403 /var/www/error/403.html),容易因权限或路径解析失败导致空白页或 500
  2. 不要在错误页里引用外部 CSS/JS 或图片,除非你为这些资源也配置了 location;更稳妥的做法是把样式内联、图片转 base64
  3. 若启用了 try_files(如 try_files $uri $uri/ =404),它不会干扰 error_page 403,但会影响 404 的触发逻辑,两者独立生效
  4. 确认 MIME 类型正确:确保 mime.types 已加载,或在 http 块中显式设置 types { text/html html; }

热门栏目