Nginx访问烧瓶的.sock权限在ubuntu16.04中被拒绝

时间:2018-07-24 04:51:08

标签: sockets ubuntu nginx flask uwsgi

我按照tutorial的说法,在ubuntu16.04中使用flask,uwsgi和nginx构建了一个项目,并获得了502 Bad Gateway异常。 我检查了日志,发现访问.sock文件的权限被拒绝

日志怎么说:

2018/07/24 12:38:24 [crit] 8805#8805: *1 connect() to unix:///home/mylegendarytime/final/final.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///home/mylegendarytime/final/final.sock:", host: "127.0.0.1"

和我的nginx设置:

server {
    listen 80;
    server_name 127.0.0.1;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:///home/mylegendarytime/final/final.sock;
    }
}

我不知道是什么错误导致此错误。我尝试过

$ chmod 777 ~/final/final.sock

但没有任何改变

编辑:

这是我的uWSGI设置:

[uwsgi]
module = wsgi

master = true
processes = 5

socket = final.sock
chmod-socket = 660
vacuum = true

die-on-term = true

我试图将chmod-socket更改为777,但这没用。

这是我的systemd Unix文件:

[Unit]
Description=uWSGI instance to serve final
After=network.target

[Service]
User=mylegendarytime
Group=www-data
WorkingDirectory=/home/mylegendarytime/final
Environment="PATH=/home/mylegendarytime/final/finalenv/bin"
ExecStart=/home/mylegendarytime/final/finalenv/bin/uwsgi --ini final.ini

[Install]
WantedBy=multi-user.target

1 个答案:

答案 0 :(得分:0)

所以我最后通过将用户更改为www-data来解决它,因为nginx使用此名称来使用套接字。您可以在nginx.conf上进行检查。