Ich habe HAProxy so konfiguriert, dass SSL-Verbindungen für einen Jenkins CI-Server beendet werden, wobei ich über normales HTTP eine Proxyverbindung zum Jenkins CI-Server-Backend herstelle. Ich kann [bisher] alle erforderlichen Vorgänge in der Weboberfläche des Jenkins CI-Servers erfolgreich ausführen, einschließlich der Verwaltung der Instanz.
Ich bekomme jedochdie Jenkins-Warnung „Reverse-Proxy-Setup ist defekt“. Dies ist auf eine strengere Überprüfung der Proxy-Konfiguration seit Jenkins Version 1.572 zurückzuführen, die eine URL in folgender Form verwendet:
https://host-name/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/a%2Fb/
um die Reverse-Proxy-Konfiguration zu testen. Die typische Ursache für die angezeigte Warnung ist die Dekodierung des %2F
in einen Schrägstrich durch den Reverse-Proxy, was zu einem 404-Fehler führt.
Es scheint gut dokumentierte Konfigurationslösungen für Reverse-Proxy-Konfigurationen von Apache und Nginx zu geben, um diese Warnung zu beseitigen. Was ich nicht finden konnte, ist etwas Ähnliches wie die Option „AllowEncodedSlashes On“ von Apache oder die „proxy_pass“-Konfiguration von Nginx oder sogar ein Beispiel für die Einrichtung von Jenkins hinter HAProxy (das ich anstelle von Apache oder Nginx verwende, da wir HAProxy bereits für andere Anwendungen eingerichtet haben).
- Betriebssystem: CentOS 6.6
- HAProxy-Version: 1.5.2-2
- Jenkins-Version: 1.610
Antwort1
Wie sich herausstellte, war dies kein Problem mit der URL-Kodierung/-Dekodierung. Es war einfach ein Bedienfehler meinerseits - wenn ich SSL bei einem Proxy beende,musssicherzustellen, dass dieX-Proxy-ProtoHeader ist eingestellt aufhttpsso dass alle von Jenkins auf diese Weise generierten URLs ein Schema verwenden vonhttps. Ich habe die Zeile in der Dokumentation auf der Seite zur Fehlerbehebung übersehen. Einfaches Hinzufügen:
http-request set-header X-Forwarded-Proto https
Zur Backend-Definition wurde die Warnung entfernt.