首页/安全/取证与溯源速查/Web 日志路径与字段
日志溯源53 条

Web 日志路径与字段

常见位置:Nginx /var/log/nginx/access.log、Apache /var/log/httpd/ 或 /var/log/apache2/;先确认 log_format,再解析字段。

取证与溯源速查安全更新于 2026-10-13

Web 日志路径与字段是什么

Web 访问日志逐条记录 HTTP 请求:谁在什么时间、用什么方法、请求了哪个 URI、返回什么状态码、响应体多大。默认位置 Nginx 在 /var/log/nginx/access.log,Apache 在 /var/log/httpd/(RHEL 系)或 /var/log/apache2/(Debian 系)。解析前必须先确认 log_format,字段顺序可能被改过。

基本信息

常见路径Nginx /var/log/nginx/、Apache /var/log/httpd 或 /var/log/apache2/
关键字段客户端 IP、时间、方法、URI、状态码、字节数、UA
格式确认nginx -T 看 log_format,Apache 看 LogFormat 指令
容器环境日志在容器内或由采集平台收口,先找采集链路

典型使用场景

  • 排查 Web 漏洞利用尝试:路径爆破、文件上传、注入特征
  • 确认可疑请求是否成功,区分 200 与 4xx/5xx
  • 还原下载行为:看 URI 类型与响应字节数
  • 结合 UA 判断自动化工具与非浏览器客户端
  • 与 WAF、反向代理日志按时间与 URI 交叉定位
  • 统计 404 与 403 的数量变化,识别目录爆破的起点时间

常用检索

常用检索
tail -100 /var/log/nginx/access.log                    # 先看格式样本
nginx -T | grep -A3 log_format                          # 确认字段定义
awk '$9==200 && $7 ~ /\.(zip|sql|tar\.gz)$/' access.log  # 非常规文件下载成功
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head   # 来源 IP 排行
zcat /var/log/nginx/access.log.*.gz | grep 'POST /upload'  # 跨轮转检索
# 字段位置取决于 log_format,先确认再写 awk,否则整列错位

combined 格式逐列读法

列含义异常表现
$remote_addr客户端 IP大量陌生网段或统一的代理 IP
$time_local请求时间(本地时区)与系统日志时区不一致导致错位
$request方法 + URI + 协议同一 URI 高频枚举或含编码绕过特征
$status响应状态码本该 403 的路径出现大量 200
$body_bytes_sent响应体字节数下载类请求字节数异常偏大
$http_user_agent客户端标识空白、伪造或扫描器特征
日志时间使用本地时区,容器内时区可能又与宿主机不同。跨服务对照前先统一时区,否则整条时间线会整体偏移。
经过反向代理后端的 access.log 记录的是代理的 IP,真实客户端 IP 要去代理日志或转发的头部里找,而这类头部可以被伪造。
同一站点按虚拟主机拆成多份 access.log 时,先确认目标域名对应哪个文件再检索,只看一份会得出错误结论。

易错点

  • 默认 combined 格式列位置固定,改过 log_format 的站点直接套用解析脚本会整列错位
  • 只看状态码不读字节数,把「尝试但失败」当成「已下载成功」
  • 容器化部署时在宿主机找不到日志文件,未先确认采集链路就断言日志缺失
  • 只读 access.log 不读 error.log,漏掉应用异常与写入失败这类关键线索

数据来源与参考

  • nginx 官方文档(log_format)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌