nginx:access.log和error.log文件为空

Man*_*ngh 21 nginx

我刚刚使用该命令在Ubuntu 14.04上安装了nginx

sudo apt-get install nginx
Run Code Online (Sandbox Code Playgroud)

现在,当我打开浏览器并输入地址时,localhost我正确地显示了"欢迎使用nginx"页面.此外,我检查了位于的配置文件,/etc/nginx/nginx.conf并找到以下日志设置:

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
Run Code Online (Sandbox Code Playgroud)

但是,当我检查这两个文件时,两个文件都是空的.我多次打开localhost页面,但日志文件仍为空.我的设置可能有什么问题?

inf*_*net 32

将nginx重新安装到较新版本后,我遇到了同样的问题.似乎日志文件所有权已更改,新的nginx无法保存任何内容.

删除日志文件并重新加载nginx对我有用:

$ sudo rm -f /var/log/nginx/*
$ sudo nginx -s reload
Run Code Online (Sandbox Code Playgroud)


Ben*_*han 8

看起来默认情况下它们被设置为转到 stdout 和 stderr。

lrwxrwxrwx  1 root root   11 Apr 27  2016 access.log -> /dev/stdout
lrwxrwxrwx  1 root root   11 Apr 27  2016 error.log -> /dev/stderr
Run Code Online (Sandbox Code Playgroud)

所以你可以删除符号链接,应该没问题。

rm -f /var/log/nginx/*
Run Code Online (Sandbox Code Playgroud)

  • 必须有人设置它才能用作 Docker 映像 (3认同)
  • 我正在使用官方 nginx docker 映像,这就是我的问题所在。它在 docker 内部确实很有意义,但找到它很有趣,哈哈 (2认同)

iom*_*omv 6

对于所有像我一样来到这里是为了弄清楚为什么日志文件是空的,并且没有意识到您实际上可能在一个 docker 容器内,就像另一个答案中的一个评论所暗示的那样,只需打开一个新的 shell,然后尾随日志

docker logs {your-container-id-here} -f