一聚教程网:一个值得你收藏的教程网站

热门教程

Nginx 目录结构中的 logs 文件夹如何配置日志轮转与存放路径

时间:2026-08-30 11:14:49 编辑:袖梨 来源:一聚教程网

nginx日志路径由配置文件中的error_log和access_log指令决定,需结合工作目录判断;日志轮转须用logrotate等系统工具,通过kill -USR1通知nginx重开日志文件。

nginx 的 logs 文件夹默认存放 access.logerror.lognginx.pid 等文件,但它的路径不是固定死的,而是由配置决定的;日志轮转也不能靠 nginx 自身完成,必须借助系统级工具(如 logrotate)来管理归档、压缩和清理。

确认当前日志实际存放路径

先查 nginx 主配置(通常是 /etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf),定位以下指令:

  1. error_log /var/log/nginx/error.log warn; → 错误日志路径与级别
  2. access_log /var/log/nginx/access.log main; → 访问日志路径与格式
  3. 若路径是相对路径(如 logs/access.log),需结合 nginx 启动时的 工作目录 判断真实位置(常见为 /usr/local/nginx/logs//var/log/nginx/

修改日志存放路径(可选)

如果想把日志统一移到自定义目录(比如 /data/logs/nginx),按以下步骤操作:

  1. 创建目标目录并授权:sudo mkdir -p /data/logs/nginx && sudo chown nginx:nginx /data/logs/nginx
  2. 在 http/server/location 块中更新日志路径:

    access_log /data/logs/nginx/access.log main;

    error_log /data/logs/nginx/error.log warn;

  3. 重载配置:sudo nginx -t && sudo nginx -s reload

用 logrotate 配置日志轮转

推荐在 /etc/logrotate.d/nginx 创建专用配置(路径需与上一步日志路径一致):

/data/logs/nginx/*.log {dailymissingokrotate 30compressdelaycompressnotifemptysharedscriptspostrotate[ -f /run/nginx.pid ] && kill -USR1 $(cat /run/nginx.pid)endscript}

关键点说明:

  1. /data/logs/nginx/*.log 必须和你实际日志路径完全匹配(支持通配符)
  2. postrotate 中的 kill -USR1 是关键:通知 nginx 关闭旧文件句柄、打开新日志文件
  3. /run/nginx.pid 路径要与 nginx 配置中的 pid 指令一致(如配置为 pid /var/run/nginx.pid;,则此处也要改)

验证与调试

执行一次手动轮转测试,确认是否正常:

  1. 运行:sudo logrotate -f /etc/logrotate.d/nginx
  2. 检查:ls -l /data/logs/nginx/ 是否生成了 access.log.1access.log.1.gz
  3. 查看 nginx 进程是否仍在写入新的 access.logsudo tail -f /data/logs/nginx/access.log
  4. 若报错“no logs found”,检查路径拼写、权限(logrotate 以 root 运行,但 nginx 进程需有写权限)

热门栏目