首页/安全/等保与合规速查/Nginx 访问日志:审计要素与格式设计

Nginx 访问日志:审计要素与格式设计

访问日志是 Web 层审计与溯源的原始证据:格式应包含时间、客户端 IP(含代理链)、账号或会话标识、请求、状态码与耗时,并按留存要求轮转。

等保与合规速查安全更新于 2026-10-13

Nginx 访问日志是什么

访问日志是 Web 层审计与溯源的原始证据。默认格式只记录少量字段,审计场景建议自定义格式,把时间与时区、真实客户端 IP(含代理链)、账号或会话标识、请求行、状态码、耗时以及耗时分解都记下来,并按留存要求配置轮转。

基本信息

适用平台Nginx 各主流版本(含 OpenResty 等衍生版本)
默认格式combined,含来源 IP、时间、请求、状态码、UA、Referer
审计扩展加入真实来源、上游耗时、请求耗时与会话标识字段
代理场景记录转发链字段并校验可信代理,避免来源被伪造
轮转按天或按大小切分,结合留存期限设置保留份数
权限要求修改主配置需 root 或具备对应权限的服务账号

典型使用场景

  • 等保审计整改中补充访问日志字段并做集中留存
  • 事件调查时按时间与状态码筛选异常请求并定位来源 IP
  • 网关与后端配合排查慢请求,用耗时字段区分网关与上游责任
  • 核对真实客户端来源,识别扫描与爬虫行为
  • 按留存期限配置轮转与归档,满足检查要求

日志格式示例

日志格式示例
log_format audit '$remote_addr - $remote_user [$time_iso8601] '
                  '"$request" $status $body_bytes_sent '
                  '"$http_referer" "$http_user_agent" '
                  'rt=$request_time urt=$upstream_response_time '
                  'xff="$http_x_forwarded_for"';
access_log /var/log/nginx/access.log audit;

字段读法

字段含义异常表现
remote_addr直连的来源地址代理场景下为网关地址
time_iso8601带时区的请求时间时间偏差会影响跨设备关联
request请求方法与路径含可疑参数或编码绕过特征
status响应状态码大量 401/403 表示探测或越权尝试
request_time请求总耗时异常升高可能为性能问题或被扫描
x_forwarded_for代理链来源未校验可信代理时可能被伪造
反向代理场景应记录转发链字段并校验可信代理 IP,只信任来自自家网关的值,避免客户端伪造来源写入日志。
日志中的查询参数可能包含口令或令牌:配置时对敏感参数做过滤或脱敏,避免凭据被明文留在日志里。

易错点

  • 转发链字段不校验可信代理:可被伪造写入日志,溯源结论不可靠
  • 真实来源与直连地址混用:应在网关统一附加来源字段,避免各层口径不一致
  • 日志中含明文凭据:查询参数未脱敏,日志泄露等于凭据泄露
  • 轮转与留存未按期限配置:归档缺失导致检查或调查时无据可查

数据来源与参考

  • Nginx 官方文档(log_format 模块)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌