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