sockets - Nginx权限被拒绝连接到.socket

标签 sockets nginx permissions gunicorn systemd

尝试使用Nginx代理Gunicorn套接字。
/etc/systemd/system/gunicorn.service文件

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/root/PSite/blog
ExecStart=/root/PSite/blog/blog/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/root/PSite/blog/blog.sock blog.wsgi:application

[Install]
WantedBy=multi-user.target
/etc/nginx/sites-available/blog文件
server {
    listen 80;
    server_name server_domain_or_IP;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /root/PSite/blog;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/root/PSite/blog/blog.sock;
    }
}

然后我启动守护程序:systemctl start gunicorn
运行systemctl status gunicorn后,它会抛出错误:

EXEC生成/root/PSite/blog/blog/venv/bin/gunicorn:权限被拒绝

所有文件夹和文件均由 www-data:www-data 拥有。

如果我将gunicorn用户更改为root,它将创建代理,但nginx日志称它没有权限。

问题是什么?

最佳答案

以非root用户身份运行服务是很好的安全措施。但是,您试图通过将文件存储在“/root”下来使问题复杂化,该文件仅用于“root”用户访问。

尝试将“PSite”站点文件夹从“/root”移动到中性位置,例如“/var/www/PSite”。

关于sockets - Nginx权限被拒绝连接到.socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115472/

相关文章:

java - 服务器如何向其他客户端广播消息?

docker - GKE (ESP + gRPC) 上的 Google Endpoints - 如何进一步调试?

android - JSON 异常和权限

c++ - UDP 发送永远不会失败

ios - 编写流时遇到麻烦

nginx - 为什么 nginx 提示未知指令?

docker run 命令结束于 : nginx: [emerg] unknown directive “events” in/etc/nginx/nginx. conf:1

permissions - WSL Ubuntu 下不允许 chmod 的 Web 服务器

java - Liferay 只显示有子项的页面

android - 在同一网络上的两个Android设备之间发送数据