因此,我查看了有关该主题的所有教程,但没有任何效果。我在Windows 10专业版上有一个JENKINS实例,在Nginx上有一个centos。我想将NGINX用作Jenkins的反向代理,以具有https并使其可从Internet访问。我当前的配置是:
server { listen 80; listen [::]:80; server_name build.test.com; access_log /var/log/nginx/log/build.test.com.access.log main; error_log /var/log/nginx/log/build.test.com.error.log; location ^~ /jenkins/ { proxy_pass http://192.X.X.X:8080/; proxy_redirect http://192.X.X.X:8080 http://build.test.com; sendfile off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; #this is the maximum upload size client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_temp_file_write_size 64k; # Required for new HTTP-based CLI proxy_http_version 1.1; proxy_request_buffering off; proxy_buffering off; # Required for HTTP-based CLI to work over SSL } }
(我替换了真实的URL和IP。)但这给了我502错误的网关。出现以下错误:连接到上游时,connect()到192.XXX:8080失败(13:权限被拒绝),客户端:192.168.5.254,服务器:build.test.com,请求:“ GET / jenkins HTTP / 1.1” ,上游:“ http://192.XXX:8080/ ”,主机:“ build.test.com”
但是在我的本地网络上,当我尝试使用http://192.XXX:8080/ URL 访问服务器时,它可以正常工作。任何想法 ?
谢谢
进行一些研究表明,这很可能是CentOS(尤其是SELinux)内部的问题。SELinux可能会在许多地方导致该问题。但是,这可能是一个很好的起点:
我遇到了类似的问题,使Fedora20,Nginx,Node.js和Ghost(博客)正常工作。原来我的问题是由于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 | audit2allow -M mynginx sudo semodule -i mynginx.pp
参考文献:
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
http://www.linuxproblems.org/wiki/Selinux
检查SELinux日志,以找出如果上述方法无济于事,为什么会抛出嘶哑的效果。