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

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

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

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

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

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

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

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

这是我的Nginx配置文件:@H_403_2@

@H_403_2@

server {
    listen 80;
    server_name 104.131.110.156;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/user/myproject/web_server/myproject.sock;
    }
}

.conf文件:@H_403_2@

@H_403_2@

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文件:@H_403_2@

@H_403_2@

[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)@H_403_2@

如果我有什么可以做的,请告诉我,非常感谢你.@H_403_2@

最佳答案
我也遵循了该教程并遇到了同样的问题.经过相当多的试验和错误后,以下步骤使我能够成功运行uWSGI和Nginx:@H_403_2@

我的Nginx.config文件:@H_403_2@

@H_403_2@

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的广泛参数.这是我用过的东西:@H_403_2@

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

哪里:@H_403_2@

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

-w wsgi:app =我的wsgi.py文件和app的位置是我的Flask对象的名称@H_403_2@

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

–http-processes = 4 =要创建的uWSGI的http进程数@H_403_2@

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

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

&安培; =在后台运行uWSGI@H_403_2@

希望这可以帮助!@H_403_2@

猜你在找的Nginx相关文章