我知道这个问题之前已经被问过了,但我认为这是一个不同的问题。
Nginx运行在www-data
下:
$ ps -eo "%U %G %a" | grep nginx
root root nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data www-data nginx: worker process
/var/log/nginx/*
必须具备正确的权限:
$ ls -lah /var/log/nginx/
total 291M
drwxr-x--- 2 www-data adm 4.0K Jul 25 06:25 .
drwxrwxr-x 14 root syslog 4.0K Aug 28 06:25 ..
-rw-r----- 1 www-data adm 12K Aug 28 19:03 access.log
-rw-r----- 1 www-data adm 250M Aug 28 18:50 access.log.1
Logrotate会以正确的权限创建日志文件:
/var/log/nginx/*.log {
( ... )
create 0640 www-data adm
当Nginx重启时,将日志记录到
access.log
,但在logrotate第一次运行后,将移动到access.log.1
。之后,总是将日志记录到access.log.1
,并且日志文件此后不再进行轮换。编辑:正如评论中指出的那样,你看到
access.log
的访问时间比access.log.1
晚,是因为我在那之前重新启动了nginx,只是为了自己确认,在发布这篇文章之前,确实重启nginx可以解决问题(直到下一次logrotate)。但在那之前,nginx已经将日志记录到access.log.1
大约3周...编辑2:这里是
/etc/nginx/nginx.conf
,其中包含头部和提及日志记录的部分。user www-data;
worker_processes auto;
pid /run/nginx.pid;
( ... )
http {
( ... )
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
( ... )
ls
命令。 - user1950164