Nginx 日志类型及配置详解
Nginx 支持多种日志记录,分为两大类:错误日志和访问日志。这两类日志对于调试问题、性能分析和审计非常重要。
1. 错误日志 (error_log)
错误日志包含 Nginx 运行期间的所有错误信息,从启动到运行,再到关闭过程中的各类警告和错误。
配置示例:
error_log /var/log/nginx/error.log crit;
这里,/var/log/nginx/error.log 是日志文件的位置,crit 定义了记录的日志级别。可选级别包括 debug, info, notice, warn, error, crit, alert, emerg。
2. 访问日志 (access_log)
访问日志记录所有 HTTP 请求的信息,包括日期、时间、请求方式、请求URI、状态码、大小等。
配置示例:
access_log /var/log/nginx/access.log combined;
combined 是格式名,预设格式包括:
combined: 标准组合格式(Common + Referer 和 User Agent)common: Common Log Formatshort: 最短格式,只包含 date, remote address 和 request line- 自定义格式: 使用
%符号插入各种字段
自定义日志格式
Nginx 允许高度定制日志格式。下面是一个自定义格式的例子:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
多个日志目的地
可以将日志输出到多个目的地,例如,同时记录到文件和 syslog:
access_log /var/log/nginx/access.log;
access_log syslog:server=192.168.1.100:514;
日志旋转
Nginx 默认不会自动旋转日志文件,可借助 logrotate 工具或其他脚本来完成日志滚动:
sudo apt-get install logrotate
sudo vi /etc/logrotate.d/nginx
# 添加如下内容
/var/log/nginx/*.log {
daily # 每天轮转一次
missingok # 文件不存在则忽略
rotate 7 # 保留7份历史日志
compress # 压缩旧日志
delaycompress # 只在下次轮转时压缩当前日志
notifempty # 当没有新条目时不创建空日志文件
}
小结
合理配置 Nginx 日志不仅可以帮助监控和故障排查,还能够优化日志管理和存储策略,避免不必要的资源浪费。以上介绍了 Nginx 日志的基础配置,实际应用中可根据需要进一步细化和扩展。