因此,我查看了有关该主题的所有教程,但没有任何效果。我在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日志,以找出如果上述方法无济于事,为什么会抛出嘶哑的效果。
Nginx 最强大的地方是在于其 HTTP 请求的反向代理,也即常说的七层反向代理。在这一层代理中,通过 Nginx 框架提供的相关配置,我们能在该层将发送过来的 http 协议转换成各种其他的协议比如 fastcgi 协议、uwsgi协议、grpc、http(高版本协议)、websocket协议等。这样使用 Nginx 框架,我们可以支持多种应用服务(java web、python web等)的
主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过
Nginx 是一个高性能的 HTTP 和反向代理服务器,代码完全用 C 实现,基于它的高性能以及诸多优点,我们可以把它设置为 hyperf 的前置服务器,实现负载均衡或 HTTPS 前置服务器等。 配置 Http 代理 # 至少需要一个 Hyperf 节点,多个配置多行 upstream hyperf { # Hyperf HTTP Server 的 IP 及 端口 server
本小节,我们继续学习 Nginx 在 七层反向代理中的其它几种比较常见的情况,比如 web 服务中的 WebSocket 协议的反向代理和 uwsgi 协议的反向代理。 1. WebSocket的反向代理 WebSocket 是目前比较成熟的技术了, WebSocket 协议为创建客户端和服务器端需要实时双向通讯的 webapp 提供了一个选择。服务器可以向浏览器推送相关消息,这样在前端实现的某个
问题内容: 我已经尝试了至少六个示例,说明如何使NGINX与Jenkins一起工作。我最近的NGINX配置基于以下示例: https://wiki.jenkins.io/display/JENKINS/Running+Jenkins+behind+Nginx 詹金斯一直在说,我希望别人能发现问题出在哪里,因为我已经花了数小时试图解决这个问题,但无济于事。 谢谢! 问题答案: 这不是NGINX问题。
我所代理的服务器不返回位置标头,这意味着我的不返回任何东西。 我想记录我的上游请求,这样我就可以在日志中看到我向上游服务器发出的请求。 我想知道是否有一种简单的方法可以在不创建lua脚本的情况下记录Nginx发出的出站请求,或者lua脚本是最好的方法,有人可以在我的搜索中提供方向吗?