nginx日志

1、默认日志格式

Nginx 标准默认 combined 组合日志格式定义:

复制代码
log_format combined '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"';
access_log /var/log/nginx/access.log combined;

整条打印日志样例:

复制代码
39.107.58.204 - - [01/Jul/2026:06:31:58 +0800] "GET /istops/images/aton-license.txt HTTP/1.1" 404 564 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/108.0.0.0 Safari/537.36"

2、参数

详细解释

1. $remote_addr

  • 含义:客户端真实 IP 地址
  • 示例:39.107.58.204
  • 补充: 若前端有 CDN / 反向代理(Nginx、Apache),该值会变成代理服务器 IP,拿不到真实访客 IP; 此时需要配置 $http_x_forwarded_for 获取真实用户 IP。

2. -(占位符,对应 $remote_user

  • 含义:HTTP Basic Auth 认证的登录用户名
  • 示例里是 -:代表本次请求没有使用账号密码登录,无认证用户。
  • 场景:网站开启登录鉴权(基础认证)时,这里会打印登录账号。

3. [$time_local]

  • 含义:服务器本地访问时间,带时区
  • 格式模板:[日/月/年:时:分:秒 时区偏移]
  • 示例:[01/Jul/2026:06:31:58 +0800]
    • 01/Jul/2026:2026 年 7 月 1 日
    • 06:31:58:06 点 31 分 58 秒
    • +0800:东八区(北京时间)

4. "$request"

  • 含义:完整 HTTP 请求行,包裹双引号
  • 格式:请求方法 请求URI HTTP协议版本
  • 示例:"GET /istops/images/aton-license.txt HTTP/1.1"
    1. GET:读取资源的请求方法(POST/ PUT/ DELETE 等为提交、修改操作)
    2. /istops/images/aton-license.txt:用户访问的接口 / 文件路径
    3. HTTP/1.1:客户端使用的 HTTP 协议版本

5. $status

  • 含义:HTTP 响应状态码
  • 示例:404 常见状态码分类:
  • 2xx:成功(200 正常、206 分片)
  • 3xx:重定向(301 永久跳转、302 临时跳转)
  • 4xx:客户端错误(404 资源不存在、403 无权限、405 方法不允许)
  • 5xx:服务器错误(500 程序崩溃、502 网关异常、503 服务不可用)

6. $body_bytes_sent

  • 含义:发送给客户端的响应体字节大小(不包含响应头)
  • 示例:564 代表本次 404 页面返回给浏览器的数据共 564 字节;静态图片、视频这里数值会很大。

7. "$http_referer"

  • 含义:请求来源页面,引荐地址,双引号包裹
  • 示例:"-"
    • -:无来源,用户直接输入网址、爬虫直接调用接口;
    • 有值示例:"shturl.cc/9bg6kae1dH",代表用户从首页点击链接跳转到当前页面。

8. "$http_user_agent"

  • 含义:客户端 UA 标识,识别设备、系统、浏览器,双引号包裹
  • 示例:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/108.0.0.0 Safari/537.36" 从 UA 可判断:
  1. 操作系统:Windows10/11
  2. 浏览器:Chrome 108 版本
  3. 区分:手机、爬虫、PC、小程序、API 请求等

极简记忆对应表

日志片段 变量名 核心作用
39.107.58.204 $remote_addr 访客 IP
- $remote_user 登录用户名
01/Jul/2026:06:31:58 +0800 $time_local 访问时间
"GET /xxx.txt HTTP/1.1" $request 请求行为 + 地址
404 $status 请求结果状态码
564 $body_bytes_sent 返回数据大小
"-" $http_referer 来源页面
"Chrome/108..." $http_user_agent 浏览器 / 设备信息

3、扩展:常用额外日志变量(生产环境经常加)

默认 combined 格式信息有限,线上一般会扩展这些参数:

  1. $request_time:请求总耗时(单位秒,保留小数,排查慢接口核心指标)
  2. $upstream_response_time:后端服务处理耗时(代理后端 Java/Python 服务时用)
  3. $http_x_forwarded_for:CDN / 代理转发后的真实访客 IP
  4. $request_length:客户端请求包总字节大小
  5. $http_cookie:请求携带的 Cookie 内容
  6. $server_name:当前请求访问的域名