2017-02-02 4 views
0

Ich möchte 2 Jenkins Server hinter Nginx Reverse Proxy laufen lassen, aber ich kann nicht das richtige finden, um es zu konfigurieren.NGINX Reverse Proxy für 2 Jenkins Server. Wie?

Die unter Config arbeitet

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; 
} 

fein Wenn ich versuche Ort /jenkins_test zu ändern, als es nicht mehr funktioniert.

Was mache ich falsch?

Antwort

0

Sie müssen zwei definieren jede jenkins-Instanz in einem eigenen Server-Abschnitt. Abhängig von der URL, die Sie auf nginx aufrufen, antwortet der richtige jenkins Server. Ihre nginx Konfiguration könnte eine Struktur wie folgt aussehen:

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 

In diesem Beispiel beide Urls den gleichen jenknins Endpunkt aufrufen (https://contoso.com/jenkins), wenn Sie wollen, verschiedene jenkins-Instanzen, die Sie diese URL in einem haben ändern Die Upstream-Abschnitte

+0

Leider kann ich nur Links wie http://contoso.com/jenkins1 und http://contoso.com/jenkins2 – Sam

0

Wenn Sie 2 Server hinter dem Nginx-Proxy ausführen möchten, bedeutet das, dass Sie 2 Standortkontexte (auch "Blöcke" genannt) benötigen.

In der Konfigurationsdatei, die wahrscheinlich in /etc/nginx/sites-availables befindet, sollten Sie die Standorte hinzufügen:

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; 
    } 
} 

Eine Sache, die Sie schould beachten ist, dass ich der Meinung, dass Ihr jenkins-Server in einem LAN (Local Area Network) sonst Es macht keinen Sinn, einen Proxy davor zu haben, da Ihr Server bereits über das Internet erreichbar ist.

Wenn Ihr jenkins-Server sind über HTTPS Sie http zu https in einem Ort Kontext ändern schould und die Portnummer listen 443 und einige SSL-Zertifikate Konfigurationen bearbeiten.

+0

Danke verwenden. Ist es möglich, die Verwendung unterschiedlicher Ports anstelle von verschiedenen Links zu vermeiden? Wie https://contoso.com/jenkins1 und https://contoso.com/jenkins2? – Sam

+0

Ja, es ist möglich. In diesem Fall sollten Ihre Server jedoch auf zwei verschiedenen physischen Computern ausgeführt werden. Beachten Sie, dass die als Parameter an die Direktive proxy_pass übergebene Adresse als Domänenname oder IP-Adresse und als optionaler Port als Referenz angegeben werden kann. Http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass Aber Es wird empfohlen, die IP-Adresse zu setzen, wenn sich die Server in Ihrem LAN befinden, um Anfragen an Ihren DNS-Server zu vermeiden. " – nanachimi

+0

Um mehr Details zu erhalten, benötige ich die Topologie Ihres Netzwerks. Auf welchem ​​Rechner läuft der Server? alle Server (Jenkins und Nginx) auf einem Server? – nanachimi