在 Nginx 中,可以使用error_page指令定义用于显示指定错误的 URL;

配置示例

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

这个示例中,当出现404错误时,将显示/404.html页面;当出现500502503504错误时,将显示/50x.html页面;

配置指令

可在httpserverlocationif in location块中使用;

语法:error_page code ... [=[response]] uri;
默认:未配置

code为 HTTP 状态码,可以同时指定多个:

error_page 404 /404.html;

# 多个错误码,使用空格分隔
error_page 500 502 503 504 /50x.html;

response为可选部分,用于改变响应的 HTTP 状态码:

# 404 错误时显示 /index.html,返回200状态码
error_page 404 =200 /index.html;

# 404 错误时 302 重定向到 /redirect.html
error_page 404 =302 /redirect.html;

uri用于指定错误页面的路径:

# 可以是静态文件
error_page 404 /errors/404.html;

# 可以是动态页面
error_page 500 /error.php;

# 命名location(@符号开头)
error_page 404 = @not_found;
error_page 502 = @fallback;
location @not_found {
    # 自定义响应
    add_header Content-Type application/json;
    return 404 '{"error": "Not Found", "code": 404}';
}
location @fallback {
    # 使用代理
    proxy_pass http://backend;
}

# 可以是外部URL
error_page 403 http://example.com/forbidden;

# 完整的URI路径
error_page 404 /custom/404/page.html;