Nginx 日志里的状态码就是 HTTP 响应状态码(如 200、404、500 等),通常出现在 access log(访问日志) 中。下面从「日志位置 → 日志格式 → 怎么看状态码 → 常见分析命令」一步步说明。
一般路径(常见发行版):
# access 日志(访问日志,含状态码)
/var/log/nginx/access.log
# error 日志(错误日志,不含状态码)
/var/log/nginx/error.log
如果你用的是 Docker:
docker logs <nginx容器名>
默认格式(combined)示例:
192.168.1.10 - - [12/Jan/2026:10:22:31 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0"
对应含义:
客户端IP - - [时间] "请求方法 URL 协议" 状态码 响应大小 "Referer" "User-Agent"
✅ 状态码就是这一位:
200
你可能看到:
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
其中:
$status → HTTP 状态码$request → 请求行$body_bytes_sent → 响应大小awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
输出示例:
1200 200
300 404
15 500
awk '$9 ~ /^4|^5/ {print $0}' /var/log/nginx/access.log
或只看 500:
grep ' 500 ' /var/log/nginx/access.log
tail -f /var/log/nginx/access.log | awk '{print $9}'
grep '/api/login' /var/log/nginx/access.log | awk '{print $9}' | sort | uniq -c
| 状态码 | 含义 | 常见原因 |
|---|---|---|
| 200 | 正常 | ✅ |
| 301 / 302 | 重定向 | rewrite、HTTPS |
| 304 | 缓存命中 | 正常 |
| 400 | 请求错误 | 参数/Header 异常 |
| 401 | 未授权 | 登录/Token |
| 403 | 禁止访问 | 权限、目录限制 |
| 404 | 不存在 | URL 写错 |
| 499 | 客户端断开 | 前端超时 |
| 500 | 服务器错误 | 后端异常 |
| 502 | 网关错误 | 后端挂了 |
| 503 | 服务不可用 | 限流/过载 |
| 504 | 网关超时 | 后端响应慢 |
你可以告诉我:
我可以直接给你精准命令或分析思路。