Ich habe keine Ahnung, warum nach dem Update von Jenkins auf Version 1.591 (Ubuntu Server 12.04) der ursprünglich korrekt eingerichtete Reverse-Proxy jetzt defekt ist. Meine aktuelle Einstellung ist genau die gleiche wie in Jenkins Wiki:
ProxyPass /jenkins http://localhost:8081/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8081/jenkins
ProxyPreserveHost On
ProxyRequests Off
AllowEncodedSlashes NoDecode
<Proxy http://localhost:8081/jenkins*>
Order deny,allow
Allow from all
</Proxy>
--prefix=/jenkins
wurde auch in /etc/default/jenkins
-Datei hinzugefügt
Ist das ein Fehler in Jenkins?
Es stellt sich heraus, dass alles gut funktioniert, auch wenn die lästige Nachricht hartnäckig erscheint. Ich denke, es ist ein kleiner Fehler der Version.
Ich war mit Jenkins als Windows Service Package konfrontiert.
Nach ihrem Wiki :
Stellen Sie sicher, dass die in der Systemkonfiguration konfigurierte Jenkins-URL mit der URL übereinstimmt, die Sie für den Zugriff auf Jenkins verwenden.
So erreichen Sie die Systemkonfiguration:
Stellen Sie sicher, dass der Portwert mit dem Portwert übereinstimmt, der im Abschnitt <arguments>
der Datei jenkins.xml im Ordner Jenkins auf Ihrem Computer festgelegt ist.
Für mich bestand das Update darin, Folgendes hinzuzufügen:
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
Dies machte es zu stoppen, sich zu beschweren.
Hier ist ein Link gibt eindeutig an, dass etwas nach 1.552 geändert wurde, sodass diese neuen Zeilen hinzugefügt werden;
nocanon and AllowEncodedSlashes
Mein Problem und meine Warnung sind verschwunden.
Jenkins verfügt über eine proaktive Überwachung, um sicherzustellen, dass der Forward- und Reverse-Proxy ordnungsgemäß konfiguriert ist. In Version 1.552 wurden diese Tests verbessert, sodass falsche Proxy-Setups, die zuvor nicht als fehlerhaft gekennzeichnet wurden, jetzt erkannt werden. Ab Version 1.572 wird diese Warnung auch für Jenkins-Instanzen angezeigt, die nicht auf Reverse Proxy angewiesen sind.
Das Korrigieren einer fehlerhaften Reverse-Proxy-Konfiguration hängt stark von Ihrem Webserver und dem Webanwendungscontainer ab. Deshalb gibt es so viele andere Antworten zu Ihrer Frage. Der Jenkins-Wiki-Artikel zu diesem Thema " Jenkins sagt, mein Reverse-Proxy-Setup ist defekt ", beschreibt mehrere Möglichkeiten, um dies in den Kommentaren zu beheben.
Aus dem obigen Artikel:
Damit ein Reverse-Proxy ordnungsgemäß funktioniert, muss er beide .__ neu schreiben. Anfrage und die Antwort.
Zum korrekten Reverse-Proxying gehört jedoch auch eine von zwei Optionen:
- antwort neu schreiben; oder
- setzen des X-Forwarded-Host-Headers (und möglicherweise des X-Forwarded-Port) für die weitergeleitete Anforderung.
In meinem Fall war es tatsächlich ein Problem mit der ersten Option, bei der das Umschreiben der Antwort nicht korrekt codierte Schrägstriche war. Wenn Sie Apache HTTPD mit Tomcat verwenden, müssen Sie für beide -Server Unterstützung für codierte Schrägstriche hinzufügen, nicht nur für Apache HTTPD.
In diesem speziellen Fall erfahren Sie, wie Sie dieses Problem lösen können: Jenkins 2.1.41 in einer Amazon Linux EC2-Instanz mit Apache 2.4, Tomcat 8.5 und Tomcat Connector.
Fügen Sie in /etc/httpd/conf.d/ssl.conf
die folgende Zeile für Ihre Jenkins Host
oder VirtualHost
hinzu:
AllowEncodedSlashes NoDecode
Fügen Sie die folgende Zeile zu /usr/share/Tomcat8/conf/catalina.properties
hinzu:
org.Apache.Tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
Starten Sie beide Dienste neu:
service httpd restart
service Tomcat8 restart
Aktualisieren Sie Ihre Seite "Jenkins verwalten". Die Warnmeldung ist weg.
Ein Beispiel für die Implementierung der zweiten Option in Apache HTTPD:
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
und für NGINX:
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
Für nginx hat mir das auch geholfen:
proxy_redirect http://localhost:8080 https://your.ssl.domain.name
Nicht schließt alle nachfolgenden Schrägstriche in die obigen URLs ein und auch nicht in die proxy_pass
-URL.