全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-20 6 分钟 ✍️ juanwangdev

日志管理

Nginx 日志是排查问题、分析流量的重要工具,下面介绍日志配置与管理方法。

访问日志

启用访问日志

nginx
http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"';
    
    access_log /var/log/nginx/access.log main;
}

常用日志变量

变量说明
$remote_addr客户端 IP 地址
$remote_user认证用户名
$time_local请求时间
$request请求行(方法+URL+协议)
$status响应状态码
$body_bytes_sent响应体字节数
$http_referer来源页面
$http_user_agent客户端浏览器信息
$request_time请求处理时间(秒)

按站点分离日志

nginx
server {
    listen 80;
    server_name www.example.com;
    
    access_log /var/log/nginx/example.com.access.log main;
    error_log /var/log/nginx/example.com.error.log;
}

错误日志

配置错误日志

nginx
error_log /var/log/nginx/error.log warn;

日志级别

级别说明
debug调试信息,最详细
info一般信息
notice重要提示
warn警告信息(推荐)
error错误信息(推荐生产)
crit严重错误
alert需立即处理
emerg紧急状态

注意事项

  • 生产环境建议使用 warnerror 级别,避免磁盘写满
  • debug 级别仅在编译时启用 --with-debug 时可用
  • 可在不同层级(main/http/server/location)分别配置日志

条件日志

按条件记录日志,例如只记录特定状态码:

nginx
map $status $loggable {
    ~^[23]  0;
    default 1;
}

access_log /var/log/nginx/important.log combined if=$loggable;

日志缓冲

提高日志写入性能:

nginx
access_log /var/log/nginx/access.log main buffer=32k flush=10s;
  • buffer=32k:缓冲区大小 32KB
  • flush=10s:最多 10 秒强制刷新

日志轮转

使用 logrotate 管理日志文件,避免单文件过大:

nginx
/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)
    endscript
}

注意事项

  • kill -USR1 通知 Nginx 重新打开日志文件,无需重启服务
  • logrotate 配置位于 /etc/logrotate.d/nginx
  • 建议保留 14 天日志,启用压缩节省空间

关闭日志

特定路径不记录访问日志:

text
location /health {
    access_log off;
    return 200 "OK";
}

要点总结

  • access_log 配置访问日志,error_log 配置错误日志
  • log_format 自定义日志格式,使用变量提取关键信息
  • 错误日志级别从 debug 到 emerg,生产建议 warn 或 error
  • 条件日志可按状态码等条件过滤记录
  • 日志轮转使用 logrotate,通过 USR1 信号通知 Nginx 重开日志
  • 健康检查等高频接口建议关闭访问日志

📝 发现内容有误?点击此处直接编辑

← 上一篇 Nginx 简介
下一篇 → 正向代理与反向代理
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库