Nginx 日志管理与分析

理解 Nginx 访问日志和错误日志的作用
掌握日志格式自定义配置方法
学会日志切割与轮转管理
掌握常用日志分析命令和技巧

Nginx 日志概述

Nginx 有两种主要日志类型:访问日志(Access Log)和错误日志(Error Log)

访问日志记录每⼀次客户端请求的详细信息

错误日志记录 Nginx 运行过程中遇到的各种问题

访问日志格式

Nginx 访问日志的格式通过 log_format 指令定义,默认使用名为 main 或 combined 的格式。

默认格式:

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

日志字段含义:

变量 含义 示例
$remote_addr 客户端 IP 地址 192.168.1.100
$remote_user 认证用户名 - (未认证时为空)
$time_local 本地时间 30/Dec/2025:10:30:00 +0800
$request 请求行 GET /index.html HTTP/1.1
$status 响应状态码 200
$body_bytes_sent 发送的响应体大小 1234
$http_referer 来源页面 网页链接
$http_user_agent 用户代理(浏览器信息) Mozilla/5.0…
$http_x_forwarded_for 代理链中的原始 IP 10.0.0.1
# 实际日志
192.168.1.100 - - [30/Dec/2025:10:30:00 +0800] "GET /index.html 
HTTP/1.1" 200 1234 "https://www.google.com/" "Mozilla/5.0 (Windows NT 
10.0; Win64; x64) AppleWebKit/537.36"

错误日志级别

错误日志有多个级别,从低到高分别是:debug、info、notice、warn、error、crit、 alert、emerg。级别越高表示问题越严重。

级别 含义 使用场景
debug 调试信息 开发调试时使用,信息最详细
info 一般信息 记录正常运行信息
notice 通知 正常但值得注意的情况
warn 警告 可能有问题但不影响运行
error 错误 发⽣错误但服务仍可运行
crit 严重 严重问题需要立即处理
alert 警报 必须立即采取行动
emerg 紧急 系统不可用

⽣产环境通常使用 warn 或 debug 级别,避免日志量过大。

调试时可以临时开启debug 级别获取详细信息。

日志切割的必要性

不管理日志可能导致:

磁盘空间耗尽:日志不断增长最终会占满磁盘空间,导致服务器无法正常运行。

查看分析困难:打开或搜索超大文件非常耗时,影响问题排查效率。

备份困难:大文件的备份和传输都很困难。

日志切割策略:

按时间切割是最常用的方式,比如每天、每周生成⼀个新的日志文件。

按大小切割适用于访问量不稳定的场景,当文件达到一定大小时自动切割。

混合策略则结合时间和大小两个条件。

日志分析的价值

流量监控:了解网站的访问量、高峰时段、访问趋势。

性能优化:找出响应慢的请求、高频访问的资源。

安全审计:发现异常访问、攻击行为、非法请求。

用户分析:了解用户来源、使⽤的设备、访问路径。

故障排查:通过错误日志快速定位问题原因。

常用的分析维度包括:PV(页面访问量)、UV(独立访客数)、状态码分布、热门页面、访问来源、地理分布等。

日志安全与合规

安全注意事项:

日志可能包含敏感信息如用户 IP、访问行为等,需要妥善保管。

应设置适当的文件权限, 只允许必要的用户访问。

敏感环境下可能需要对日志进行脱敏处理。

合规要求:

根据相关法规(如 GDPR、网络安全法),日志需要保存⼀定期限。

同时也需要有日志删除机制,不能无限期保留用户数据。

建议根据业务需要和法规要求制定日志保留策略,通常保留 30 天到 1 年不等。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐