Jenkins背后nginx转发端口8081 - > 8081无法正常工作

时间:2018-01-26 22:31:22

标签: docker nginx jenkins reverse-proxy

我在Docker容器中运行Jenkins并配置nginx(在另一个容器中运行)充当反向代理。我的目标是让Jenkins(在其容器中侦听端口8080)可以在运行Docker引擎的主机上的端口8081上访问。

所以我基本上想要做的是使用nginx将所有请求转发到localhost:8081jenkins-docker-container:8080

基本上一切正常,但Jenkins似乎不时重定向到localhost(没有端口)。这是我做的:

  • 我将http://localhost:8081设置为Jenkins配置中的Jenkins网址

  • 我使用以下nginx jenkins配置:

    server {
        listen       8081;
        server_name  "localhost";
    
        access_log off;
    
        location / {
            proxy_pass         http://jenkins-master:8080;
            proxy_redirect     http://jenkins-master:8080 $scheme://localhost:8081;
    
            proxy_set_header   Host              $host;
            proxy_set_header   X-Real-IP         $remote_addr;
            proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host  $host;
            proxy_set_header   X-Forwarded-Proto http;
            proxy_set_header   X-Forwarded-Port  8081;
            proxy_max_temp_file_size 0;
    
            proxy_connect_timeout      150;
            proxy_send_timeout         100;
            proxy_read_timeout         100;
    
            proxy_buffer_size          8k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
    
        }
    
    }
    
  • 这是我的Docker Swarm配置

      jenkinsmaster:
        build: jenkins-master
        image: michaellihs/jenkins
        ports:
          - 50000:50000
        secrets:
          - jenkins-user
          - jenkins-pass
        volumes:
          - jenkinsdata:/var/log/jenkins
          - jenkinsconf:/var/jenkins_home
          - jenkinsjobs:/var/jenkins_jobs
        networks:
          nw001:
            aliases:
              - jenkins-master
    
      jenkinsnginx:
        build: jenkins-nginx
        image: michaellihs/jenkinsnginx
        ports:
          - 8081:8081
        networks:
          - nw001
    

我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我不确定你应该使用proxy_redirect。我们让詹金斯没有它,一切正常,就像这样:

location / {
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Server $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://jenkins:8080;
}

我刚刚检查了我们的设置 - 我们没有对Jenkins方面进行进一步的配置调整(就像Jira需要的tomcat一样),所以你的重定向可能是由proxy_redirect选项引起的。