即使我在别处指定日志,nginx也会尝试在/ var中打开日志

我试图运行nginx作为一个非特权用户 – 具体来说,我平常的loginID。 我发现我无法成功启动nginx,因为它坚持尝试在/var/log/nginx/打开日志文件,即使当我提供的configuration文件告诉它将文件存储在别处时也是如此。

具体来说,我这样调用nginx:

 $ nginx -c ~/my-nginx.conf 

该命令中提到的configuration文件具有这种forms:

 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指令包含的less数几个文件。

打印这些行后,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) 

但是,它会在死亡之前创build零configuration文件中提到的日志文件。

为什么nginx试图打开这些文件,以及如何防止这样做呢?

你已经把你的error_log指令放在http级别。 这个指令可以在更高的层次上进行 。 尝试将您的指令复制到HTTP块之外的nginx.conf文件的顶部。