即使我将日志指向其他地方,nginx 仍尝试在 /var 中打开日志

即使我将日志指向其他地方,nginx 仍尝试在 /var 中打开日志

我尝试以非特权用户身份运行 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_logerror_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 块之外。

相关内容