Ein Reverse -Proxy bezieht sich auf einen Server, der verwendet wird, um Ressourcen im Namen eines Clients von einem oder mehreren Servern abzurufen.
Reverse -Proxies sind ein leistungsstarkes und beliebtes Tool, das Lastausgleich über mehrere Server hinweg umfasst, die Sicherheit verbessert, indem das Anwendungs -Backend, das Caching inhaltlich und mehr versteckt ist.
Bei der Arbeit mit Jenkins können Sie einen Reverse -Proxy verwenden, damit Benutzer mit einer Domäne oder einer Subdomain auf das Jenkins -Dashboard zugreifen können. Mit einem Reverse -Proxy können Sie auch die Sicherheit des Jenkins -Clusters verbessern. Der Reverse-Proxy ist ein Verhältnis zwischen einem Client und dem Jenkins-Server.
Ein Beispiel für umgekehrte Proxys, die wir mit Jenkins verwenden können. Natürlich können Sie auch andere Reverse -Proxys mit Jenkins konfigurieren und die Wahl, welche zu verwenden ist, hängt von Ihren spezifischen Anforderungen und Infrastrukturen ab.
Sobald Sie Jenkins mit einem Reverse -Proxy konfiguriert haben, können Sie auf einen Fehler wie „Fehler“ stoßen! Reverse Proxy falsch konfiguriert.”
In diesem Tutorial können Sie grundlegende Methoden abdecken, mit denen Sie einen solchen Fehler diagnostizieren und beheben können.
Was verursacht diesen Fehler?
Es ist gut zu erinnern, dass es keine eindeutige Antwort darauf gibt, was diesen Fehler verursachen kann. Die Reverse -Proxy -Konfiguration variiert je nach Zielserver. Die Hauptursache für diesen Fehler besteht jedoch darin.
So beheben Sie diesen Fehler?
Unabhängig davon, welchen umgekehrten Proxy Sie verwenden, müssen Sie sicherstellen, dass die folgenden Header in allen Anfragen an Jenkins enthalten sind.
Sie können dies tun, indem Sie die Header zu Ihrer Reverse -Proxy -Konfiguration hinzufügen. Die Header umfassen:
Sie können die mod_rewrite -Konfiguration in Apache verwenden und die folgenden Optionen hinzufügen:
Requestheader Set X-Forwarded-Proto "Https"
Requestheader Set X-Forward-Port "443"
Verwenden Sie für Nginx die Konfiguration:
proxy_set_header x-forward-proto https;
proxy_set_header x-forward-port 443;
In Haproxy:
HTTP-Request-Set-Header X-Forward-Port 443
HTTP-Request Add-Header X-Forwarded-Proto HTTPS
Überprüfen Sie die eingehenden Header
Sie können die Header, die Jenkins aus dem Reverse -Proxy erreichen, mit dem unten gezeigten Skript überprüfen:
Def req = org.Kohsuke.Hefter.Hefter.CurrentRequest
Def Headernames = Req.Getheadernames ();
while (Headernamen.Has MoreElements ())
Def Headername = Headernamen.NextElement ();
Wenn (!Kopfliebname.TolowerCase ().Startswith ("X-Forward"))
println (Headername+":");
Def Headers = Req.Getheaders (Headername);
während (Header.Has MoreElements ())
Def Headervalue = Header.NextElement ();
println ("\ t" + Kopfservalue);
Das obige Skript sollte die Header zurückgeben, die Jenkins erreichen. Ein Beispiel für die erwartete Ausgabe:
X-Forwarded-Host:
Domain.com
X-Forwarded-Proto:
https
X-Forward-Port:
443
X-Forward-for:
Wenn Sie die Header mit X-forwarded-Proto und X-Forward-Port sehen, ist der Reverse-Proxy korrekt konfiguriert. Wenn das Problem jedoch bestehen bleibt, überprüfen Sie den Jenkins Servlet.
Abschluss
Wir haben einen der häufigsten Fehler besprochen, auf die Sie bei der Verwendung von Jenkins mit einem Reverse -Proxy und wie Sie es beheben können.