wsgi nginx错误:连接上游时拒绝了权限

关于这个似乎有很多StackOverflow的问题,但不幸的是,没有任何工作对我来说。

我在nginx上得到了一个502错误的网关,以及日志中的以下内容: connect() to ...myproject.sock failed (13: Permission denied) while connecting to upstream

我正在ubuntu上运行wsginginx ,我一直在关注Digital Ocean的这个指南 。 我明显从uwsgi -s myproject.sock --http 0.0.0.0:8000 --module app --callable app工作正确configurationwsgi ,但我不断得到nginx权限被拒绝的错误,我不知道为什么:

在遇到这个问题和另一个 问题之后,我改变了.ini文件,并添加了chown-socketchmod-socketuidgid参数(也试过只是设置前两个,或者和一些不同的权限设置 – 即使是最宽容的没有工作)。

这一个看起来很有前途 ,但我不相信selinux是安装在我的Ubuntu(运行sudo apt-get remove selinux给出“包'selinux'没有安装,所以不能删除”,并find / -name "selinux"不显示任何东西)。 以防万一,我尝试了这个post推荐的。 卸载apparmorsudo apt-get install apparmor )也没有工作。

每当我做出改变,我运行sudo service nginx restart ,但我只看到502网关错误(和权限拒绝错误,当我读日志)。

这是我的nginxconfiguration文件:

 server { listen 80; server_name 104.131.110.156; location / { include uwsgi_params; uwsgi_pass unix:/home/user/myproject/web_server/myproject.sock; } } 

.conf文件:

 description "uWSGI server instance configured to serve myproject" start on runlevel [2345] stop on runlevel [!2345] setuid user setgid www-data env PATH=/root/.virtualenvs/my-env/bin chdir /home/user/myproject/web_server exec uwsgi --ini /home/user/myproject/web_server/myproject.ini 

.ini文件:

 [uwsgi] module = wsgi master = true processes = 5 socket = /home/user/myproject/web_server/myproject.sock chown-socket=www-data:www-data chmod-socket = 664 uid = www-data gid = www-data vacuum = true die-on-term = true 

(如果有帮助,这些是我的数字海洋机器的规格: Linux 3.13.0-43-generic #72-Ubuntu SMP Mon Dec 8 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

请让我知道,如果有什么我可以做的,非常感谢。

我也跟着这个教程,遇到了同样的问题。 经过相当多的试验和错误之后,下面的步骤允许我成功地运行uWSGI和nginx:

我的nginx.config文件:

 server { listen 80; server_name localhost; location / { try_files @yourapplication; } location @yourapplication; { include uwsgi_params; uwsgi_pass unix:/PATH_TO_PROJECT/PROJECT.sock; } } 

我的.ini文件工作得不好,所以我决定利用uWSGI广泛的参数。 这是我用的:

uwsgi -s /PATH_TO_PROJECT/PROJECT.sock -w wsgi:app -H /PATH_TO_PROJECT/venv --http-processes=4 --chmod-socket=666 --master &

哪里:

-s /PATH_TO_PROJECT/PROJECT.sock =我的.sock文件的位置

-w wsgi:app =我的wsgi.py文件的位置, app是我的Flask对象的名字

-H /PATH_TO_PROJECT/venv =我的虚拟环境的位置

--http-processes=4 = uWSGI创建的http进程数

--chmod-socket=666 =在套接字上设置的权限

--master =允许uWSGI与其主进程管理器一起运行

& =在后台运行uWSGI

希望这可以帮助!

路径: unix:/PATH_TO_PROJECT/PROJECT.sock应该放在/tmp这个修正了我的问题。

遵循这个线程中的所有建议后,我仍然收到权限错误。 最后缺失的部分是纠正/etc/nginx/nginx.conf文件中的nginx user

 # old: user nginx; user www-data;