温馨提示×

nginx日志状态码怎么看

小樊
48
2026-10-01 09:45:15
栏目: 编程语言

Nginx 日志里的状态码就是 HTTP 响应状态码(如 200、404、500 等),通常出现在 access log(访问日志) 中。下面从「日志位置 → 日志格式 → 怎么看状态码 → 常见分析命令」一步步说明。


一、Nginx 日志在哪

一般路径(常见发行版):

# access 日志(访问日志,含状态码)
/var/log/nginx/access.log

# error 日志(错误日志,不含状态码)
/var/log/nginx/error.log

如果你用的是 Docker:

docker logs <nginx容器名>

二、access.log 长什么样(关键看状态码)

默认格式(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

三、nginx.conf 里日志格式定义

你可能看到:

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 → 响应大小

四、怎么“看”状态码(常用命令)

1️⃣ 看所有状态码分布

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

输出示例:

 1200 200
  300 404
   15 500

2️⃣ 只看 4xx / 5xx 错误

awk '$9 ~ /^4|^5/ {print $0}' /var/log/nginx/access.log

或只看 500:

grep ' 500 ' /var/log/nginx/access.log

3️⃣ 实时看状态码

tail -f /var/log/nginx/access.log | awk '{print $9}'

4️⃣ 统计某个接口的错误率

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 网关超时 后端响应慢

六、如果你愿意,我可以进一步帮你

你可以告诉我:

  • ✅ 用的是 Docker / K8s / 裸机
  • ✅ 想看 某个接口 / 某个 IP / 某段时间
  • ✅ 是 排查 500 / 502 / 404 问题

我可以直接给你精准命令或分析思路。

0 踩