nginx 代理访问 uwsgi 套接字的正确权限?

Correct permission for nginx proxy to access uwsgi socket?

我按照 DigitalOcean 的 tutorial 使用 wsgi 和 nginx 设置了一个烧瓶服务器,但我的 nginx 服务器无法访问 uwsgi 套接字。

错误日志如下:

2017/01/15 21:11:39 [crit] 1565#1565: *1 connect() to unix:/root/fib/fib.sock failed (13: Permission denied) while connecting to upstream, client: <IP>, server: <IP>, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/root/fib/fib.sock:", host: <IP>
2017/01/15 21:11:40 [crit] 1565#1565: *1 connect() to unix:/root/fib/fib.sock failed (13: Permission denied) while connecting to upstream, client: <IP>, server: <IP>, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:/root/fib/fib.sock:", host: <IP>, referrer: "<IP>"

我的 uwsgi ini 文件是:

[uwsgi]
module = wsgi:app

master = true
processes = 5

socket = fib.sock
chmod-socket = 666
uid = root
gid = www-data
vacuum = true

die-on-term = true

我的 nginx 配置是:

server {
    listen 80;
    server_name <SERVER_IP_HIDDEN>;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/root/fib/fib.sock;
    }
}

谁能帮我设置正确的权限以允许nginx访问套接字文件?谢谢!

进一步了解 Unix 层次结构 (Ubuntu, FreeBSD, OSX)。您应该根据口味将套接字文件放在 /var/lib/uwsgi/var/run 中。

除了 root 之外,没有人可以访问 root 的主目录。

如有疑问,请使用namei