似乎有很多关于StackOverflow的问题,但不幸的是,没有什么对我有效。
我在nginx上得到了一个502坏网关,日志中有以下内容:connect()to。。。我的项目。连接到上游时sock失败(13:权限被拒绝)
我正在运行ubuntu
上的wsgi
和nginx
,我一直在数字海洋上遵循这个指南。显然,我正确地配置了wsgi
,因为uwsgi-smy项目。sock——HTTP0.0。0.0:8000--模块应用程序--可调用应用程序
工作,但我一直收到nginx
权限拒绝错误,我不知道原因:
在遇到这个问题和另一个问题后,我更改了。ini
文件,并添加了chown socket
、chmod socket
、uid
和gid
参数(还尝试了只设置前两个或,以及两个不同的权限设置——即使是最允许的权限设置也不起作用)。
这个看起来很有希望,但我不相信我的Ubuntu上安装了selinux
(运行sudo-apt-get-remove-selinux
会给出“包'selinux'没有安装,所以没有删除”和find/-name“selinux”
没有显示任何内容)。不过,为了以防万一,我也尝试了这篇文章推荐的方法。卸载apparmor
(sudo-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
)
如果有什么我能做的,请告诉我,非常感谢。
总结一下其他人对解决nginx中的权限拒绝错误所说的话(您可以查看/var/log/nginx/error.log
通常是由于以下原因:
。位于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
将执行此操作。
我也遵循了那个教程,遇到了同样的问题。经过相当多的尝试和错误,以下步骤允许我成功运行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与其主进程管理器一起运行
在遵循此线程中的所有建议之后,我仍然会收到权限错误。最后缺少的部分是更正/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是现有文件夹的文件权限。我不知道可能出了什么问题。 下面是错误消息。