2017-02-02 5 views
0

Я хотел бы запустить 2 сервера jenkins за обратным прокси-сервером nginx, но я не могу найти его правильно.NGINX Reverse Proxy для 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

Вам потребуется два определения каждого экземпляра jenkins в его собственной секции сервера. Затем, в зависимости от URL-адреса, который вы вызываете на nginx, ответит правый сервер 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 

В этом примере оба адреса будут называть один и ту же jenknins конечной точкой (https://contoso.com/jenkins), если вы хотите, чтобы они были разные Дженкинс случаев вы будете иметь изменить этот адрес в одном из верхние секторы

+0

К сожалению, я могу использовать только такие ссылки, как http://contoso.com/jenkins1 и http://contoso.com/jenkins2 – Sam

0

Если вы хотите запустить 2 сервера за прокси-сервером nginx, это значит, что вам нужны 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; 
    } 
} 

Одна вещь, вы schould замечание, что я считаю, что ваш Дженкинс сервер находится в той же локальной сети (Local Area Network), иначе не имеет смысла использовать прокси-сервер, потому что ваш сервер уже доступен через Интернет.

Если Дженкинс серверы доступны через HTTPS вы schould изменить http к https в контексте местоположения и измените номер порта на listen 443 и некоторые сертификаты SSL конфигурации.

+0

Спасибо. Можно ли использовать разные порты вместо разных ссылок? Как https://contoso.com/jenkins1 и https://contoso.com/jenkins2? – Sam

+0

Да, это возможно. Но в этом случае ваши серверы должны работать на двух разных физических машинах. Обратите внимание, что адрес, переданный как параметр в директиву proxy_pass, может быть указан как имя домена или IP-адрес, а необязательный порт «ссылка http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass Но он рекомендует установить IP-адрес, если серверы находятся в вашей локальной сети, чтобы не отправлять запросы на ваш DNS-сервер. – nanachimi

+0

Для меня более подробная информация Мне нужна топология вашей сети. На какой машине работает сервер? на каждом сервере (jenkins и nginx) на одном сервере? – nanachimi