清空 nginx 日志

清空 nginx 日志

我正在尝试让 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 用户?

为什么 nginx 进程以 nobody 用户运行

关于 nginx 清空日志,我建议你清空日志目录或暂时禁用 Selinux,看看是否是它导致了问题setenrofce 0

您还可以检查语法是否正确,以及错误日志指令位于正确的位置。

答案2

我遇到了完全相同的问题,最后,我转到我的根文件夹,发现access.log在另一个位置还有另一个文件,并且正在写入该文件。

cd /
find . -name 'access.log'

相关内容