返回特定错误码

基本配置

server {
    listen 80;
    server_name www.example.com example.com;
    root /var/www/html;

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

基本配置说明

  • error_page 404 /404.html:定义 404 错误页面
  • error_page 500 502 503 504 /50x.html:定义 500、502、503、504 错误页面
  • location = /50x.html:精确匹配 /50x.html
  • root /usr/share/nginx/html:指定网站根目录

基本配置原理error_page 指令用于定义错误页面,当 Nginx 返回指定的错误码时,会使用定义的错误页面。

自定义错误页面

error_page 404 /404.html;
location = /404.html {
    internal;
}

自定义错误页面说明

  • internal:指定内部位置,只能由 Nginx 内部重定向访问

自定义错误页面原理internal 指令用于指定内部位置,只能由 Nginx 内部重定向访问,不能直接访问。

重定向错误页面

error_page 404 =302 /not-found.html;

重定向错误页面说明

  • =302:指定错误码为 302

重定向错误页面原理=302 用于指定错误码,Nginx 会返回指定的错误码,而不是原始的错误码。

返回 JSON 错误

error_page 404 = @json_error;

location @json_error {
    default_type application/json;
    return 404 '{"error": "Not Found"}';
}

返回 JSON 错误说明

  • @json_error:命名位置
  • default_type application/json:指定默认内容类型
  • return 404 '{"error": "Not Found"}':返回 JSON 错误

返回 JSON 错误原理@json_error 是命名位置,用于定义错误处理逻辑。default_type 指令用于指定默认内容类型,return 指令用于返回响应。

错误码

错误码说明示例
200成功OK
301永久重定向Moved Permanently
302临时重定向Found
400错误请求Bad Request
401未授权Unauthorized
403禁止访问Forbidden
404未找到Not Found
500服务器内部错误Internal Server Error
502网关错误Bad Gateway
503服务不可用Service Unavailable
504网关超时Gateway Timeout