我正在使用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”,上游:
“http://127.0.0.1:8001/,主机:“本地主机:8080”
下面是我的nginx.conf文件的内容
服务器{
听8080;
服务器名称localhost;
访问_log/var/log/nginx/example.log;
error\u log/var/log/nginx/example.error.log;
地点/{
代理通行证http://127.0.0.1:8001;
$remote\u addr的代理\u集\u头X转发;
代理设置头主机$http\U主机;
}
}
在HTML页面中,我得到了502坏网关
我犯了什么错误
免责声明
在运行此操作之前,请确保您的用例没有安全隐患
答复
我在让Fedora20、Nginx、Node.js和Ghost(blog)工作时遇到了类似的问题。原来我的问题是由于SELinux引起的
这应该可以解决问题:
setsebool-P httpd\u can\u网络\u连接1
细节
我检查了SELinux日志中的错误:
sudo cat/var/log/audit/audit.log | grep nginx | grep拒绝
并发现运行以下命令修复了我的问题:
sudo cat/var/log/audit/audit.log | grep nginx | grep denied | audit2allow-M mynginx
sudo semodule-i mynginx.pp
选项2(未经测试,但可能更安全)
setsebool-P httpd\u can\u网络\u继电器1
https://security.stackexchange.com/questions/152358/difference-between-selinux-booleans-httpd-can-network-relay-and-httpd-can-net
参考资料
http://blog.frag-gustav.de/2013/07/21/nginx-selinux-me-mad/
https://wiki.gentoo.org/wiki/SELinux/Tutorials/Where_to_find_SELinux_permission_denial_details
http://wiki.gentoo.org/wiki/SELinux/Tutorials/Managing_network_port_labels