当前位置: 首页 > 知识库问答 >
问题:

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

汪正雅
2023-03-14

似乎有很多关于StackOverflow的问题,但不幸的是,没有什么对我有效。

我在nginx上得到了一个502坏网关,日志中有以下内容:connect()to。。。我的项目。连接到上游时sock失败(13:权限被拒绝)

我正在运行ubuntu上的wsginginx,我一直在数字海洋上遵循这个指南。显然,我正确地配置了wsgi,因为uwsgi-smy项目。sock——HTTP0.0。0.0:8000--模块应用程序--可调用应用程序工作,但我一直收到nginx权限拒绝错误,我不知道原因:

在遇到这个问题和另一个问题后,我更改了。ini文件,并添加了chown socketchmod socketuidgid参数(还尝试了只设置前两个或,以及两个不同的权限设置——即使是最允许的权限设置也不起作用)。

这个看起来很有希望,但我不相信我的Ubuntu上安装了selinux(运行sudo-apt-get-remove-selinux会给出“包'selinux'没有安装,所以没有删除”和find/-name“selinux”没有显示任何内容)。不过,为了以防万一,我也尝试了这篇文章推荐的方法。卸载apparmorsudo-apt-get-install-apparmor)也无法工作。

每次进行更改时,我都会运行sudo服务nginx restart,但我只看到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

如果有什么我能做的,请告诉我,非常感谢。

共有3个答案

皮献
2023-03-14

总结一下其他人对解决nginx中的权限拒绝错误所说的话(您可以查看/var/log/nginx/error.log通常是由于以下原因:

  1. 您正在编写。位于nginx没有权限的位置的sock文件

解决方法1:首先,不要编写。sock文件位于/tmp此处建议的服务器故障答案,因为不同的服务在fedora中看到不同的/tmp。你可以在一些地方写,比如~/myproject/mysocket。sock。nginx用户必须能够访问我们的应用程序目录,才能访问那里的套接字文件。默认情况下,CentOS会非常严格地锁定每个用户的主目录,因此我们会将nginx用户添加到用户组中,这样我们就可以打开授予访问权限所需的最低权限。

可以使用以下命令将nginx用户添加到用户组。用你自己的用户名替换命令中的用户:

sudo usermod -a -G $USER nginx

现在,我们可以授予用户组对主目录的执行权限。这将允许Nginx进程输入和访问以下内容:

chmod 710/path/to/project/dir

如果权限被拒绝错误仍然存在:那么hacksudo setEnforce0将执行此操作。

戴嘉珍
2023-03-14

我也遵循了那个教程,遇到了同样的问题。经过相当多的尝试和错误,以下步骤允许我成功运行uWSGI和nginx:

我的nginx。配置文件:

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是我的烧瓶对象的名称

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

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

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

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

百里光熙
2023-03-14

在遵循此线程中的所有建议之后,我仍然会收到权限错误。最后缺少的部分是更正/etc/nginx/nginx中的nginx用户。conf文件:

# old: user  nginx;
user  www-data;

 类似资料:
  • 注意:最后一个###.##.###.####是运行代码的google compute VM的外部IP。我相信前两个IP是我的家IP。 在连接到上游:[nginx]时,我尝试了:上的

  • 问题内容: 我正在使用Nginx和Gunicorn配置Django项目。 在Nginx服务器中访问端口时,我的错误日志文件中出现以下错误; 2014/05/30 11:59:42 [crit] 4075#0:* 6 connect()到127.0.0.1:8001在连接到上游时失败(13:权限被拒绝),客户端:127.0.0.1,服务器:localhost,请求:“ GET / HTTP / 1.

  • 问题内容: 我将nginx更新为 1.4.7 ,将php 更新为 5.5.12 ,之后得到了 502错误 。在更新之前,一切正常。 nginx-error.log nginx.conf 问题答案: php更新后出现类似错误。PHP固定一个安全漏洞,其中有权限的套接字文件。 打开或,具体取决于您的版本。 取消注释所有权限行,例如: listen.group = www-data listen.mod

  • 我在nginx(http://52.xx.xx.xx/)上访问我的IP时遇到了502个网关错误,日志简单地说: 2015/09/18 13:03:37[错误]32636#0:*1连接()失败(111:拒绝连接),连接到上游,客户端:xx.xx.xx.xx,服务器:xx.xx.xx.xx,请求:“Get/HTTP/1.1”,上游:“UWSGI://127.0.0.1:8000”,主机:“xx.xx.

  • 问题内容: 我运行 npm install lodash, 但它抛出 错误:EACCES:权限被拒绝 错误。我知道这是权限问题,但据我所知,本地安装节点模块不需要sudo权限。如果我使用sudo运行它,它将安装在〜/ node_modules文件夹中。 drwxrwxr-x 是现有文件夹的文件许可权。我不知道可能出了什么问题。 下面是错误消息。 问题答案: 使用 npm init 创建 packa

  • 我运行npm install lodash,但它抛出错误:EACCES:权限被拒绝错误。我知道这是权限问题,但据我所知,在本地安装节点模块不需要sudo权限。如果我用sudo运行它,它会安装在~/node\u modules文件夹中。drwxrwxr-x是现有文件夹的文件权限。我不知道可能出了什么问题。 下面是错误消息。