我使用普通用户而不是 root 运行 nginx。我在系统范围内安装了 nginx,但在 HOME 中有 nginx.conf。
$HOME/nginx/nginx.conf
worker_processes 1;
error_log /home/worker/nginx/log/nginx/error.log warn;
pid /home/worker/nginx/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /home/worker/nginx/log/nginx/access.log;
server {
listen 8080;
root /home/worker/nginx/data;
}
}
Run Code Online (Sandbox Code Playgroud)
启动nginx
$ nginx -c /home/worker/nginx/nginx.conf
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
Run Code Online (Sandbox Code Playgroud)
正如你在 nginx.conf 中看到的,我已经定义了error_log,但我仍然收到警告消息:
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
Run Code Online (Sandbox Code Playgroud)
nginx本身可以工作,只是想删除这个警告消息,我该怎么做?
小智 5
最近(2020-11-19),-enginx 添加了一个选项,允许您覆盖已编译的错误日志路径。您可以使用该选项将 nginx 指向用户可写文件(或者可能stderr)。
请参阅https://trac.nginx.org/nginx/changeset/f18db38a9826a9239feea43c95515bac4e343c59/nginx
小智 5
我参加聚会迟到了,但我遇到这个问题还有另一个原因。我只是添加了 nginx 的文件夹和文件的访问权限(www-data在我的例子中是用户):
sudo chown -R www-data:www-data /var/log/nginx
Run Code Online (Sandbox Code Playgroud)
我实际上已经删除了整个文件夹和日志文件并重新创建了它们:
sudo rm -rf /var/log/nginx
sudo mkdir /var/log/nginx
sudo touch /var/log/nginx/error.log
sudo chown -R www-data:www-data /var/log/nginx
Run Code Online (Sandbox Code Playgroud)
也许有一个更优雅的解决方案。
| 归档时间: |
|
| 查看次数: |
42297 次 |
| 最近记录: |