Nginx支持哪些HTTP状态码?

Nginx支持的常见HTTP状态码有:

  • 200 OK:请求成功
  • 301 Moved Permanently:永久重定向
  • 302 Found:临时重定向
  • 304 Not Modified:请求资源未修改,使用缓存
  • 400 Bad Request:客户端请求错误
  • 401 Unauthorized:未经授权
  • 403 Forbidden:服务器拒绝请求
  • 404 Not Found:请求资源不存在
  • 500 Internal Server Error:内部服务器错误
  • 502 Bad Gateway:网关错误
  • 503 Service Unavailable:服务不可用

配置示例:

# 301重定向
location /old/ {
    return 301 /new/; 
}

# 404错误页
error_page 404 /404.html;   

# 5xx错误页 
error_page 500 502 503 504 /50x.html;  

# 返回403禁止访问  
location /admin/ {
    deny all;
    return 403;
}  

# 根据Negitve路径判断是否返回304
location ~* ^.+\.(jpg|png|gif)$ {
    if ($request_method = GET) {
        expires max; # 过期时间设置较大,利用缓存
        if (!-f $request_filename) { # 如果文件不存在
            return  304; # 返回304
        }
    }
}
  • 第一条规则实现301重定向/old/到/new/
  • 第二条规则指定404错误显示404.html页面
  • 第三条规则指定5xx系列错误显示50x.html页面
  • 第四条规则 location /admin/拒绝所有请求,返回403禁止访问
  • 第五条规则对jpg|png|gif类型的GET请求,如果文件不存在则返回304状态码,利用浏览器缓存。

所以访问/old/会301重定向到/new/
404错误会显示404.html页面
访问/admin/会返回403状态码
对不存在的图片文件会返回304状态码使用浏览器缓存