温馨提示×

nginx访问日志怎么看明白

小樊
46
2026-09-20 21:56:28
栏目: 编程语言

Nginx 的访问日志(通常是 access.log)记录了每一次 HTTP 请求的详细信息。要看明白它,关键搞清楚 日志格式每一段的含义


一、Nginx 访问日志默认在哪里

常见位置:

  • /var/log/nginx/access.log
  • /usr/local/nginx/logs/access.log

查看命令:

tail -f /var/log/nginx/access.log

二、默认日志格式(combined)

Nginx 默认使用 combined 格式,一行日志大概长这样:

192.168.1.10 - - [10/Apr/2024:14:32:01 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 ..."

逐个解释:

内容 含义
192.168.1.10 客户端 IP
- 远程日志名(一般为空)
- 认证用户(无登录为空)
[10/Apr/2024:14:32:01 +0800] 请求时间(时区)
"GET /index.html HTTP/1.1" 请求方法、路径、协议
200 HTTP 状态码
612 响应字节数
"-" Referer(来源页,直接访问为 -
"Mozilla/5.0 ..." User-Agent(浏览器/客户端)

三、常见状态码怎么看

  • 200:正常
  • 301 / 302:重定向
  • 304:缓存未变
  • 400:请求错误
  • 401:未授权
  • 403:禁止访问
  • 404:找不到页面
  • 500:服务器内部错误
  • 502:网关错误(后端挂了)
  • 504:网关超时

四、自定义日志格式(更易懂)

你可以在 nginx.conf 里改:

log_format main '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

access_log /var/log/nginx/access.log main;

常用变量:

  • $request_time:请求总耗时
  • $upstream_response_time:后端响应时间
  • $host:访问域名

五、实用分析命令

查看访问最多的 IP:

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

查看 404 请求:

awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -nr

查看慢请求(假设有 $request_time):

awk '$NF > 1 {print}' access.log

六、一个“看懂日志”的小技巧

先盯三件事

  1. 谁访问的(IP)
  2. 访问了什么(URL)
  3. 结果怎样(状态码 + 耗时)

如果你愿意,可以把一段看不懂的 真实日志贴出来,我帮你逐字解释。

0