nginx日志路径由配置文件中的error_log和access_log指令决定,需结合工作目录判断;日志轮转须用logrotate等系统工具,通过kill -USR1通知nginx重开日志文件。
nginx 的 logs 文件夹默认存放 access.log、error.log 和 nginx.pid 等文件,但它的路径不是固定死的,而是由配置决定的;日志轮转也不能靠 nginx 自身完成,必须借助系统级工具(如 logrotate)来管理归档、压缩和清理。
先查 nginx 主配置(通常是 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf),定位以下指令:
error_log /var/log/nginx/error.log warn; → 错误日志路径与级别access_log /var/log/nginx/access.log main; → 访问日志路径与格式logs/access.log),需结合 nginx 启动时的 工作目录 判断真实位置(常见为 /usr/local/nginx/logs/ 或 /var/log/nginx/)如果想把日志统一移到自定义目录(比如 /data/logs/nginx),按以下步骤操作:
sudo mkdir -p /data/logs/nginx && sudo chown nginx:nginx /data/logs/nginx
access_log /data/logs/nginx/access.log main;
error_log /data/logs/nginx/error.log warn;
sudo nginx -t && sudo nginx -s reload
推荐在 /etc/logrotate.d/nginx 创建专用配置(路径需与上一步日志路径一致):
/data/logs/nginx/*.log {dailymissingokrotate 30compressdelaycompressnotifemptysharedscriptspostrotate[ -f /run/nginx.pid ] && kill -USR1 $(cat /run/nginx.pid)endscript}
关键点说明:
/data/logs/nginx/*.log 必须和你实际日志路径完全匹配(支持通配符)postrotate 中的 kill -USR1 是关键:通知 nginx 关闭旧文件句柄、打开新日志文件/run/nginx.pid 路径要与 nginx 配置中的 pid 指令一致(如配置为 pid /var/run/nginx.pid;,则此处也要改)执行一次手动轮转测试,确认是否正常:
sudo logrotate -f /etc/logrotate.d/nginx
ls -l /data/logs/nginx/ 是否生成了 access.log.1 或 access.log.1.gz
access.log:sudo tail -f /data/logs/nginx/access.log