加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

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

发布时间:2020-12-13 21:36:02 所属栏目:Nginx 来源:网络整理
导读:关于这一点似乎有很多关于StackOverflow的问题,但遗憾的是没有任何对我有用. 我在nginx上遇到502坏网关,以及日志上的以下内容:connect()到 myproject.sock连接到上游时失败(13:权限被拒绝) 我在ubuntu上运行wsgi和nginx,我一直在关注this guide from Digit

关于这一点似乎有很多关于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 question和this 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

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读