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,只信任来自自家网关的值,避免客户端伪造来源写入日志。
日志中的查询参数可能包含口令或令牌:配置时对敏感参数做过滤或脱敏,避免凭据被明文留在日志里。