Django (13:权限被拒绝)连接到上游时:[nginx]
我正在使用Nginx和Gunicorn配置Django项目 当我在Nginx服务器中访问我的端口Django (13:权限被拒绝)连接到上游时:[nginx],django,python-2.7,nginx,gunicorn,Django,Python 2.7,Nginx,Gunicorn,我正在使用Nginx和Gunicorn配置Django项目 当我在Nginx服务器中访问我的端口gunicorn mysite.wsgi:application--bind=127.0.0.1:8001时,我的错误日志文件中出现以下错误: 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.1”,上游:“h
gunicorn mysite.wsgi:application--bind=127.0.0.1:8001
时,我的错误日志文件中出现以下错误:
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.1”,上游:“http://127.0.0.1:8001/
,主机:“本地主机:8080”
下面是我的nginx.conf
文件的内容
server {
listen 8080;
server_name localhost;
access_log /var/log/nginx/example.log;
error_log /var/log/nginx/example.error.log;
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}
}
在HTML页面中,我得到了502坏网关
我犯了什么错误?我以当前登录用户mulagala的身份运行Nginx,解决了我的问题 默认情况下,用户nginx定义在
nginx.conf
文件的最顶部,如下所示
user nginx; # Default Nginx user
将nginx更改为当前用户的名称-这里是mulagala
然而,这可能无法解决实际问题,实际上可能会产生偶然的副作用
有关有效的解决方案,请参阅。免责声明
在运行此操作之前,请确保您的用例没有安全隐患
答复
我在让Fedora20、Nginx、Node.js和Ghost(blog)工作时遇到了类似的问题。原来我的问题是由于SELinux引起的
这应该可以解决问题:
setsebool -P httpd_can_network_connect 1
细节
我检查了SELinux日志中的错误:
sudo cat /var/log/audit/audit.log | grep nginx | grep denied
sudo cat /var/log/audit/audit.log | grep nginx | grep denied
并发现运行以下命令修复了我的问题:
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
sudo semodule -i mynginx.pp
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/etc/nginx/fastcgi_temp(/.*)?"
sudo restorecon -R -v /etc/nginx/fastcgi_temp
选项2(未经测试,但可能更安全)
工具书类
我也遇到了这个问题。另一种解决方案是将httpd网络连接的SELinux布尔值切换到上的
(Nginx使用httpd标签)
要使更改保持不变,请使用-p标志
setsebool httpd_can_network_connect on -P
您可以使用
getsebool -a | grep httpd
我也遇到过这个问题。我将Nginx与hvm一起使用,下面的解决方案解决了我的问题:
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
sudo semodule -i mynginx.pp
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/etc/nginx/fastcgi_temp(/.*)?"
sudo restorecon -R -v /etc/nginx/fastcgi_temp
在Centos 7上也有类似的问题。当我尝试应用索林所规定的解决方案时,我开始循环往复。首先,我的权限{write}被拒绝。然后,当我解决了,我有一个权限{connectto}被拒绝。然后再次返回到权限{write}被拒绝
按照上面的@Sid回答,使用getsebool-a | grep httpd
检查标志并切换它们,我发现除了httpd之外,can\u网络连接也处于关闭状态。http\u anon\u写入也被关闭,导致权限拒绝写入和权限拒绝{connectto}
type=AVC msg=audit(1501830505.174:799183): avc:
denied { write } for pid=12144 comm="nginx" name="myroject.sock"
dev="dm-2" ino=134718735 scontext=system_u:system_r:httpd_t:s0
tcontext=system_u:object_r:default_t:s0 tclass=sock_file
使用获得
sudo cat/var/log/audit/audit.log | grep nginx | grep拒绝
如上所述
所以我一次解决一个问题,一次切换一个问题
setsebool httpd_can_network_connect on -P
然后运行上面@sorin和@Joseph指定的命令
sudo cat /var/log/audit/audit.log | grep nginx | grep denied |
audit2allow -M mynginx
sudo semodule -i mynginx.pp
基本上,您可以检查setsebool上设置的权限,并将其与从grepp'ing'audit.log nginx获得的错误关联起来,拒绝
在/etc/nginx/nginx.conf
将所有权更改为用户
现在看魔术。如果nginx上api网关代理传递的centos api url上出现“502坏网关”错误,请运行以下命令来解决此问题
sudo setsebool -P httpd_can_network_connect 1
13在centos服务器上连接到UpstreamGinx时,权限被拒绝-
setsebool-p httpd可以连接网络1另一个原因可能是:;您正在使用代理通过nginx访问应用程序,但您没有为使用gunicorn的代理添加gunicorn.sock
文件
您需要在nginx配置中添加代理文件路径
location / {
include proxy_params;
proxy_pass http://unix:/home/username/myproject/gunicorn.sock;
}
这是一个很好的教程,它一步一步地实现了这一点
注意:如果您没有创建anyname.sock
文件,您必须先创建if,可以使用上述方法或任何其他方法或教程来创建它
首先,请参见被拒绝的内容:
就我而言,它在CentOS7上有帮助:
在看到什么是启用后:
getsebool -a | grep httpd
谢谢,这也解决了我的问题,我在CentOS 7上。谢谢。我需要yum安装policycoreutils-python
,以便首先获得audit2allow
。参考:在Fedora23上,安装policycoreutils python时未提供命令audit2allow
。经过一些研究,我发现您应该安装devel包yum安装policycoreutils-devel
。参考:这应该在许多unix操作系统的cherrpy和nginx文档中,因为在看完所有文档之后,我花了8个小时试图弄清楚它!请注意,如果打开,设置httpd_can_network_connect可能会对面向公众的服务器造成严重的安全风险。看到了,这就行了,谢谢。我从CentOS 6.5->6.7进行了更新,在更新过程中它必须将默认值设置为off,因为它在更新之前工作正常。简单修复。请注意,如果打开,设置httpd_can_network_connect可能会对面向公众的服务器造成严重的安全风险。看到了,没有。没有帮助我认为您不需要使用gunicorn.sock文件。这是可选的。如果需要,您应该能够在不使用Gunicorn.sock的情况下设置Nginx、Gunicorn和Django。
sudo cat /var/log/audit/audit.log | grep nginx | grep denied
type=AVC msg=audit(1618940614.934:38415): avc: denied { connectto } for
pid=18016 comm="nginx" path="/home/deployer/project/tmp/sockets/puma.sock" scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
tclass=unix_stream_socket permissive=1
sudo setenforce 0
setsebool httpd_can_network_connect on -P
setsebool httpd_can_network_relay on -P
getsebool -a | grep httpd
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> on
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> on
httpd_can_network_memcache --> off
httpd_can_network_relay --> on
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> off
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> on
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_ipa --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off