当前位置: 首页 > 知识库问答 >
问题:

需要有关nginx反向代理(和jenkins?)配置的帮助

富涛
2023-03-14

我正在尝试使用2个docker容器设置一个基本模型(用于训练):

  • 一个是nginx
  • 一个是詹金斯

nginx被用作反向容器(下一步将是https前端)。詹金斯应该是公开的www.devportal.org:90/ci

我已经部分成功了。我的意思是我可以用给定的地址访问它。但是...

> < li>

当我尝试与管理员用户连接时,出现登录页面。但是当填写用户/密码时,我被重定向到http://www.devportal.org/ci/.

如果我将端口添加到此地址,我将获得作为管理员用户连接的实例主页。

当我选择“管理”页面时,我看到一条警告消息,提示我的反向代理配置已损坏。

此外,在配置系统时,页面会显示,但永远不会完成加载。

我尝试了nginx的各种配置,但没有一个给出正确的结果。Jenkins位置URL设置为nginx已知的实例地址。只要两者都在链接到专用docker网络(jenkins称为jenkins_ci)的容器内,地址为http://jenkins_ci:8080/ci/.如果我运行:docker exec nginx_revproxy wgethttp://jenkins_ci:8080/ci/我真的看到了主页。

这是我的nginx配置(在:/etc/nginx/conf.d/reverse_proxy.conf)

# Reverse proxy configuration for one jenkins server
# Nginx listen public traffic on port 90 and forward to jenkins container address on port 8080
server {
        listen 90;

        access_log /var/log/nginx/reverse-access.log;
        error_log /var/log/nginx/reverse-error.log;

        location ^~ /ci/ {
                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_set_header        X-Forwarded-Proto $scheme;
                proxy_pass http://jenkins_ci:8080/ci/;

                # Fix the "It appears that your reverse proxy set up is broken" error.
                proxy_set_header X-Forwarded-Host $host;
                proxy_read_timeout  90;
                proxy_redirect      http://jenkins_ci:8080/ http://www.devportal.org:90/;
                # Required for new HTTP-based CLI
                proxy_http_version 1.1;
                proxy_request_buffering off;
        }
}

当在connexion获得错误页面时,我在nginx容器日志中看到了这一点

172.17.0.1 - - [19/Jul/2019:12:32:04 0000] “GET /ci/ HTTP/1.1” 404 153 “http://www.devportal.org:90/ci/login?from=/ci/” “Mozilla/5.0 (X11;乌班图;Linux x86_64;rv:68.0) Gecko/20100101 Firefox/68.0“ ”-“ 2019/07/19 12:32:04 [error] 7#7: *40 ”/usr/share/nginx/html/ci/index.html“ 未找到 (2: 没有这样的文件或目录), 客户端: 172.17.0.1, 服务器: localhost, request: ”GET /ci/ HTTP/1.1“, host: ”www.devportal.org“, referrer: ”http://www.devportal.org:90/ci/login?from=/ci/”

在jenkins容器日志上,我还有:2019年7月19日下午2:18:25hudson.diagnosis.ReverseProxySetupMonitorgetTestForReverseProxySetup警告:http://www.devportal.org/ci/manage与超文本传输协议:

nginx conf的其他信息:

server {
        listen 90;
         server_name www.devportal.org;
        access_log /var/log/nginx/reverse-access.log;
        error_log /var/log/nginx/reverse-error.log;

    location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
        #rewrite all static files into requests to the root
        #E.g /static/12345678/css/something.css will become /css/something.css
        rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last;
     }

        location /ci/ {
        proxy_pass      http://jenkins_ci:8080;
        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_set_header        X-Forwarded-Proto $scheme;
        # Fix the "It appears that your reverse proxy set up is broken" error.
        proxy_set_header X-Forwarded-Host $host;
        proxy_read_timeout  90;
        proxy_redirect      http://jenkins_ci:8080/ http://www.devportal.org:90/;
            # Required for new HTTP-based CLI
        proxy_http_version 1.1;
        proxy_request_buffering off;
        proxy_set_header Connection ""; # Clear for keepalive
    }
}

<jenkins.model.JenkinsLocationConfiguration>
  <adminAddress>[my mail address]</adminAddress>
  <jenkinsUrl>http://www.devportal.org:90/ci</jenkinsUrl>
</jenkins.model.JenkinsLocationConfiguration>

jenkins.model.JenkinsLocationConfiguration.xml

我在jenkins日志中的错误消息方面取得了一些进展:

Jul 22, 2019 11:59:35 AM hudson.diagnosis.ReverseProxySetupMonitor getTestForReverseProxySetup
WARNING: http://www.devportal.org/ci/manage vs. http://www.devportal.org:90/ci/manage

现在,我只松了端口号(之前输了整个域名),注意,有没有proxy_redirect都一样。

共有1个答案

霍财
2023-03-14

因此,Jenkins URL 应设置为用户在描述中所看到的位置:

Optionally specify the HTTP address of the Jenkins installation, such as 
http://yourhost.yourdomain/jenkins/. This value is used to let Jenkins know how 
to refer to itself, ie. to display images or to create links in emails. This is 
necessary because Jenkins cannot reliably detect such a URL from within itself

所以在你的例子中:http://www.devportal.org:90/

这句话应该删除,因为我认为没有必要:

proxy_redirect超文本传输协议jenkins_ci8080http://www.devportal.org:90/

你应该像这样从代理传递中删除'/ci'

proxy_pass http://jenkins_ci:8080;
 类似资料:
  • 本文向大家介绍Nginx反向代理websocket配置实例,包括了Nginx反向代理websocket配置实例的使用技巧和注意事项,需要的朋友参考一下 最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 1.下载 tengine 最近的源码 2.安装基础的依赖包 3.解压编译安装 nginx.conf 的配置如下: test

  • 本文向大家介绍nginx反向代理webSocket配置详解,包括了nginx反向代理webSocket配置详解的使用技巧和注意事项,需要的朋友参考一下 最近在做项目的时候用到了webSocket协议,而且是在微信小程序中用到了webSocket,微信小程序中使用wss协议的时候不能设置端口,只能使用默认的443端口。我擦,我的https已经监听了443端口,webSocket再去监听443,肯定不

  • 我有一个spring boot应用程序(带有Keyclope适配器),运行在端口8000上,Keyclope运行在8080上 我编辑了我的 /etc/hosts文件,将测试域(foo.bar.com)上的请求路由到127.0.0.1 到目前为止,我对SSL不感兴趣。 我的示例nginx配置: 问题: 此示例nginx conf是否足够?我有一些无限的重定向发生。我的spring应用程序中来自Key

  • 本文向大家介绍nginx反向代理配置去除前缀,包括了nginx反向代理配置去除前缀的使用技巧和注意事项,需要的朋友参考一下 使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:加"/" ^~/user/表示匹配前缀是user的请求,proxy_pass的结

  • 主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过

  • Nginx 是一个高性能的 HTTP 和反向代理服务器,代码完全用 C 实现,基于它的高性能以及诸多优点,我们可以把它设置为 hyperf 的前置服务器,实现负载均衡或 HTTPS 前置服务器等。 配置 Http 代理 # 至少需要一个 Hyperf 节点,多个配置多行 upstream hyperf { # Hyperf HTTP Server 的 IP 及 端口 server