Ubuntu:连接到上游uWSGI套接字时,Nginx权限被拒绝错误

时间:2019-01-27 10:49:33

标签: ubuntu nginx amazon-ec2 uwsgi ubuntu-18.04

我正在尝试在运行Ubuntu 18.04的AWS EC2实例上设置Flask + uWSGI + Nginx Web服务。 Nginx在连接到uWSGI套接字时出现权限错误:

connect() to unix:/home/myuser/myserv/myserv.sock failed (13: Permission denied) while connecting to upstream

设置:

  • 应用程序用户:myuser(主目录:/home/myuser/
  • 应用:myserv(安装目录:/home/myuser/myserv/,日志目录:/home/myuser/myserv/log/
  • uWSGI套接字:/home/myuser/myserv/myserv.sock
  • Nginx用户:www-data用于工作进程,root用于主进程
  • 该应用程序用户myuser也已添加到组www-data
  • 应用程序用户的主目录,应用程序的安装目录和日志目录以及uWSGI套接字文件之间共享相似之处:
    • 所有权相同:myuser:www-data
    • 相同权限:dir为760,套接字文件为660

故障排除的观察结果:

  1. Nginx能够将上述错误写入应用程序的日志目录/home/myuser/myserv/log/
  2. 默认情况下SELinux被禁用。
  3. 如果套接字文件的位置更改为/tmp/myserv.sock,问题就消失了。
  4. 将套接字权限从660更改为666无济于事。

搜索互联网的建议很少,但对于我而言似乎不适用

  • 套接字文件或任何包含目录的权限/所有权均不正确>>通过观察#1,#3和#4来
  • SELinux可能阻止Nginx读取套接字文件>>根据观察#2不相关
  • Nginx和uWSGI必须以同一用户和同一组身份运行>>通过观察#3无效

知道我的设置有什么问题吗?谢谢。

0 个答案:

没有答案