我想在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
,那么它将不再起作用。
我错了什么?
答案 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证书配置。