我正在尝试让 nginx 记录访问和错误日志。我的日志目前包含非常旧的内容,混合了日志和 gzip 压缩日志。
$ ls -la access*.log*
-rw-rw-rw- 1 nobody nogroup 0 Jan 8 2016 access.log
-rw-rw-rw- 1 nobody nogroup 2261400 Jan 7 2016 access.log.1
-rw-rw-rw- 1 nobody nogroup 311947 Dec 30 2015 access.log.10.gz
-rw-rw-rw- 1 nobody nogroup 434744 Dec 29 2015 access.log.11.gz
我的配置是:
user www-data www-data;
error_log /var/log/nginx/error.log info;
...
http {
access_log /var/log/nginx/access.log combined;
...
奇怪的是,尽管user
声明了,工作进程仍然以 nobody 身份运行:
# ps -eo "%U %G %a" | grep nginx
root root nginx: master process /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
nobody nogroup nginx: worker process
nobody nogroup nginx: worker process
access.log
我尝试将现有文件的所有者设置error.log
为,nobody:nogroup
但仍然没有记录任何内容。
中没有任何 (相关) 内容syslog
。
我尝试过混合方法(!)或在更改配置文件后重新加载并重新启动 nginx。仍然没有结果...
我的配置怎么不正确?
答案1
您可能需要参考以下主题来配置 nginx 用户:
关于 nginx 清空日志,我建议你清空日志目录或暂时禁用 Selinux,看看是否是它导致了问题setenrofce 0
您还可以检查语法是否正确,以及错误日志指令位于正确的位置。
答案2
我遇到了完全相同的问题,最后,我转到我的根文件夹,发现access.log
在另一个位置还有另一个文件,并且正在写入该文件。
cd /
find . -name 'access.log'