跳转到主内容
极星编程网:以代码为星,赴技术山海!

Nginx在http块配置error_page实现全局错误页面重定向

在 Nginx 的 http 块中配置 error_page 可实现全站统一错误页面处理,支持多级继承(http→server→location),默认向下继承但可被覆盖;可配合 location 和 return 改写状态码,路径解析依赖 root,需避免循环错误和混合内容问题。 在 Nginx 的
http
块中配置
error_page
,可以实现**全站统一的错误页面处理**,比如所有 404、500 错误都跳转到同一个自定义页面。这种方式比在每个
server
块里重复配置更简洁、易维护。 作用范围与继承规则
error_page
指令支持多级作用域:http → server → location。在
http
块中定义的
error_page
会默认继承给所有下属
server
和
location
,但可被下层同名配置覆盖。 若某
server
块未定义 404 处理,就使用
http
块中的全局配置 若该
server
显式写了
error_page 404 /404-custom.html
,则以它为准 注意:
error_page
只改变响应行为,不改变 HTTP 状态码(除非配合
return
或内部重定向) 基本写法:重定向到静态页面 在
http
块内添加如下配置,将常见错误映射到统一 HTML 文件:
http { # 全局错误页(路径相对于 root 或 alias 设置) error_page 404 /error/404.html; error_page 500 502 503 504 /error/5xx.html; error_page 403 /error/403.html;
# 确保这些路径能被正确访问(建议配一个通用 root)
root /usr/share/nginx/html;
} 上面配置要求服务器上存在
/usr/share/nginx/html/error/404.html
这类文件。Nginx 会以内部重定向方式返回该文件,状态码仍为原始错误码(如 404)。 进阶用法:返回自定义状态码 + 页面 如果希望把 404 统一转成 200 状态并显示友好页(SEO 或 SPA 路由场景),需配合
location
块和
return
或
try_files
:
http { error_page 404 @notfound;
location @notfound {
    internal;  # 仅限内部跳转,禁止外部直接访问
    return 200 '

页面找不到了~

'; # 或返回静态文件: # root /usr/share/nginx/html; # try_files /error/spa-index.html =404; }
} 关键点:
internal
防止用户绕过错误逻辑直接请求
@notfound
;
return 200
显式改写状态码;若用
try_files
,确保 fallback 文件存在且路径正确。 注意事项与常见问题 路径解析依赖 root :
error_page 404 /xxx.html
中的
/xxx.html
是 URI 路径,Nginx 会结合当前
server
或
http
块的
root
拼出真实文件路径 避免循环 :不要让错误页本身触发相同错误(例如 404 页面又引用了不存在的 CSS),否则可能返回空白或 500 日志中仍记录原始状态码 :access log 显示的是客户端收到的状态码(如 404),不是你
return
改写的那个 HTTPS 站点需确保错误页资源也走 HTTPS ,尤其是内嵌图片、JS 时,避免混合内容警告

相关文章