Set*_*eth 20 linux nginx amazon-ec2 logfile
当nginx启动时,它会创建0大小的日志文件"access.log".但是没有写入日志.error.log工作正常.
nginx.conf:
http {
access_log /usr/local/webserver/nginx/logs/access.log combined;
....
}
Run Code Online (Sandbox Code Playgroud)
日志文件是:
-rw-r--r-- 1 root root 0 Mar 4 00:54 access.log
-rw-r--r-- 1 root root 3903 Mar 4 00:54 error.log
Run Code Online (Sandbox Code Playgroud)
我完全糊涂了.@ _ @
这是一个许可问题吗?
但是,在nginx.conf的后面部分,在server {}部分,access_log有效!为什么http {}部分不起作用?
Mar*_*ark 19
根据您的配置,nginx主进程和工作进程可能以不同的用户身份运行.
要查看nginx进程的用户和组:
ps -eo "%U %G %a" | grep nginx
root root nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www-data www-data nginx: worker process
Run Code Online (Sandbox Code Playgroud)
工作进程用户需要对日志文件的写许可权.
要查看access.log的文件权限:
ls -l /var/log/nginx/access.log
-rw-r----- 1 www-data www-data 0 Apr 29 2012 /var/log/nginx/access.log
Run Code Online (Sandbox Code Playgroud)
在这种情况下,访问日志由nginx工作进程拥有,并具有写访问权限.
另请参见nginx http_log_module文档.
作为次要问题,nginx日志可以通过logrotate cronjob一旦达到一定大小就旋转.创建新日志文件时,应使用所有者,组和权限创建它,以允许nginx工作进程写入它.
nginx的这些日志轮换设置在/etc/logrotate.d/nginx中定义
另请参阅ubuntu的日志轮换指南.
我有一个类似的问题,访问日志文件没有被写入,但错误日志文件工作正常.权限也适合我.我通过强制nginx进程使用重新加载日志文件来解决自己
kill -USR1 `cat /var/run/nginx.pid`
Run Code Online (Sandbox Code Playgroud)
/var/run/nginx.pid你的nginx PID文件的路径在哪里
小智 3
您必须将用户和组 nginx 绑定到您的日志文件。
chown nginx:nginx access.log
chown nginx:nginx error.log
Run Code Online (Sandbox Code Playgroud)
你能发布完整的 nginx.conf 吗?例如用pastebin?
编辑:在每个部分中,您必须定义“组合”等关键字!
| 归档时间: |
|
| 查看次数: |
25840 次 |
| 最近记录: |