sockets - Nginx和uWSGI : Proper permissions setup for 502 Bad Gateway issue

标签 sockets nginx flask permissions uwsgi

在uWSGI中,如果我将套接字位置更改为/tmp/api,则该网站将呈现。但是,如果将套接字地址更改为/srv/www/api/,则会收到502网关错误。
我相信这是由于有关/srv文件夹和Nginx/uWSGI用户的权限问题所致。
/var/log/nginx/error.log 中:

*1 connect() to unix:///srv/www/api/app.sock failed (2: No such file or directory) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: api.example.com, request: "GET / HTTP/2.0", upstream: "uwsgi://unix:///srv/www/api/app.sock:", host: "api.example.com"
Flask项目代码位于/srv/www/api中。我以username用户身份登录。
权限:
$ ll -ld /srv/www/api/
drwxrwxr-x 4 www-data www-data 4096 Jun 28 20:52 /srv/www/api/
$ ll -ld /srv/www
drwxrwxr-x 4 username www-data 4096 Jun 27 21:41 /srv/www
$ ll -ld /srv
drwxrwxr-x 4 username username 4096 Jun 27 21:37 /srv
$ ll -ld /tmp
drwxrwxrwt 9 root root 4096 Jun 28 23:05 /tmp
用户组:
$ groups username
username : username sudo dev
$ groups www-data
www-data : www-data dev
$ grep 'dev' /etc/group
dev:x:1001:username,www-data
我有几个要设置为dev组的用户。目的是使该组中的用户能够读和写/srv,而不必同时位于根组中(这是一种不好的做法吗?)。
/srv/www/api/app.ini :
[uwsgi]
module = wsgi:app

master = true
processes = 5

socket = /tmp/app.sock
chmod-socket = 660
vacuum = true

die-on-term = true
/etc/nginx/sites/sites-available/api.example.com (位置部分):
location / {
    include uwsgi_params;
    uwsgi_pass unix:/tmp/app.sock;
}
有没有一种方法可以修复我的权限设置,以便:
  • 可以在该文件夹
  • 中创建套接字
  • 没有sudo的dev组中的用户也将能够读写/srv文件夹和子目录
  • 最佳答案

    我想通了。我最终将文件夹的所有者设置为:

    chown -R username:www-data /srv/www/api
    
    每次更改后,我还确保重新启动systemctl服务。我不记得之前做过这件事,所以很可能是即使进行了所有更改之后,仍然没有任何效果的原因。我只重新启动了Nginx,而不是服务本身-负责创建套接字的服务。
    要重新启动systemctl服务:
    sudo systemctl restart <service_name>
    

    关于sockets - Nginx和uWSGI : Proper permissions setup for 502 Bad Gateway issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62644037/

    相关文章:

    wordpress - 在 Azure VMSS 上使用 Cloud Init 部署 WordPress 时收到 502 错误网关

    Python:在 Flask 应用程序中使用 pdb

    python - 运行 python manage.py 时出错

    python - 使用 Flask 中的 JWT 扩展检查 API 响应消息的消息完整性

    C++ 服务器/客户端网络

    c - 当套接字无效时

    Django 1.3 URL重写

    ruby-on-rails - 乘客 EBADF 文件描述符异常 502

    java - 避免 SocketTimeoutException 的最佳方法是什么?

    javascript - Sails.js:特定于 socket.io 的策略