![即使我将日志指向其他地方,nginx 仍尝试在 /var 中打开日志](https://linux22.com/image/684652/%E5%8D%B3%E4%BD%BF%E6%88%91%E5%B0%86%E6%97%A5%E5%BF%97%E6%8C%87%E5%90%91%E5%85%B6%E4%BB%96%E5%9C%B0%E6%96%B9%EF%BC%8Cnginx%20%E4%BB%8D%E5%B0%9D%E8%AF%95%E5%9C%A8%20%2Fvar%20%E4%B8%AD%E6%89%93%E5%BC%80%E6%97%A5%E5%BF%97.png)
我尝试以非特权用户身份运行 nginx(具体来说,是我的常用登录 ID)。我发现无法成功启动 nginx,因为它坚持尝试打开日志文件/var/log/nginx/
,即使我提供的配置文件告诉它将这些文件存储在其他地方。
具体来说,我像这样调用 nginx:
$ nginx -c ~/my-nginx.conf
该命令中提到的配置文件具有以下形式:
pid /home/me/nginx/nginx.pid;
events { worker_connections 1024; }
http {
access_log /home/me/nginx/access.log;
error_log /home/me/nginx/error.log;
# many more lines omitted
}
省略的行均不包含access_log
或error_log
指令,通过指令包含的少数文件也不包含include
。
nginx 总是在打印这些行之后死机:
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2016/06/13 12:43:54 [emerg] 4473#0: open() "/var/log/nginx/error.log" failed (13: Permission denied)
然而,它确实在死亡之前创建了配置文件中提到的长度为零的日志文件。
为什么 nginx 尝试打开这些文件?如何阻止它这样做?
答案1
您已将 error_log 指令置于 http 级别。此指令可以在更高层次上。尝试将您的指令复制到 nginx.conf 文件顶部,HTTP 块之外。