2个jenkins服务器的NGINX反向代理。怎么样?

时间:2017-02-02 14:57:24

标签: nginx jenkins reverse-proxy

我想在nginx反向代理后面运行2个jenkins服务器,但我找不到合适的配置它。

下面的配置工作正常

location /jenkins {
          proxy_pass https://contoso.com/jenkins;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

如果我尝试将位置更改为/jenkins_test,那么它将不再起作用。

我错了什么?

2 个答案:

答案 0 :(得分:1)

您需要在自己的服务器部分中定义两个jenkins实例。 然后根据您在nginx上调用的url,正确的jenkins服务器将响应。 你的nginx配置可能有这样的结构:

http{

    # application server for first jenkins instance
    upstream app_servers_first_jenkins_instance {

    # if jenkins is running on the same server this should be something like 127.0.0.1 ...
        server https://contoso.com/jenkins;

    }

    # application server for secons jenkins instance
    upstream app_servers_second_jenkins_instance {

        server https://contoso.com/jenkins;

    }

# JENKINS SERVER 1 
server{
listen 80;
  server_name jenkinsfirstinstance.yourdomain.com;
  location / {
    proxy_pass http://app_servers_first_jenkins_instance;
   }
}

# JENKINS SERVER 2
server{

listen 80;
  server_name jenkinssecondinstance.yourdomain.com;
  location / {
    proxy_pass http://app_servers_second_jenkins_instance;
   }
}   

} # END OF HTTP SECTION

在这个示例中,如果您希望它们是不同的jenkins实例,则两个url将调用相同的jenknins端点(https://contoso.com/jenkins),您将在其中一个上游部分修改此URL

答案 1 :(得分:1)

如果你想在nginx代理后面运行2个服务器,那就意味着你需要2个位置上下文(也称为“块”)。

在可能位于/etc/nginx/sites-availables的配置文件中,您应添加位置:

http{
    listen 80;

    location /jenkins1 {
      proxy_pass http://jenkins1-local-ip-address:8000;
      include /etc/nginx/proxy_params;
    }
    location /jenkins2 {
      proxy_pass http://jenkins2-local-ip-address:8001;
      include /etc/nginx/proxy_params;
    }
}

你应该注意的一点是,我认为你的jenkins服务器在同一局域网(局域网)中,否则在前面代理代理是没有意义的,因为你的服务器已经可以通过互联网访问了。

如果您的jenkins服务器可以通过HTTPS访问,您可以在位置上下文中将http更改为https,并将端口号编辑为listen 443和一些ssl证书配置。