套接字 – wsgi nginx错误:连接到上游时权限被拒绝

前端之家收集整理的这篇文章主要介绍了套接字 – wsgi nginx错误:连接到上游时权限被拒绝前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

关于这一点似乎有很多关于StackOverflow的问题,但遗憾的是没有任何对我有用.

我在Nginx上遇到502坏网关,以及日志上的以下内容:connect()到… myproject.sock连接到上游时失败(13:权限被拒绝)

我在ubuntu上运行wsgi和Nginx,我一直在关注this guide from Digital Ocean.我显然正确配置wsgi因为uwsgi -s myproject.sock –http 0.0.0.0:8000 –module app – callable app工作,但我继续获取Nginx权限被拒绝错误,我不明白为什么:

在遇到this questionthis other one之后,我更改了.ini文件添加了chown-socket,chmod-socket,uid和gid参数(也尝试设置前两个,或者,以及几个不同的权限设置 – 和即使是最宽容的也行不通).

This one seemed promising,但我不相信selinux安装在我的Ubuntu上(运行sudo apt-get删除selinux给出“套件’selinux’没有安装,所以没有删除”和找到/ -name“selinux”没有显示任何东西) .不过,为了以防万一,我也尝试了this post推荐的内容.卸载apparmor(sudo apt-get install apparmor)也无法正常工作.

每次我做一个更改,我运行sudo服务Nginx重启,但我只看到502网关错误(和我读取日志时的权限被拒绝错误).

这是我的Nginx配置文件

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

希望这可以帮助!

猜你在找的Nginx相关文章