Odwrotna proxy odnosi się do serwera używanego do pobierania zasobów w imieniu klienta z jednego lub więcej serwerów.
Odwrotne proxy są potężnym i popularnym narzędziem, które obejmuje równoważenie obciążenia na wielu serwerach, ulepszanie bezpieczeństwa poprzez ukrywanie zaplecza aplikacji, buforowanie treści i wiele innych.
Podczas pracy z Jenkins możesz użyć odwrotnego proxy, aby umożliwić użytkownikom dostęp do pulpitu nawigacyjnego Jenkins za pomocą domeny lub subdomeny. Odwrotna proxy może również pozwolić na poprawę bezpieczeństwa klastra Jenkins. Odwrotna proxy będzie łączeniem dla klienta i serwera Jenkins.
Przykładem odwrotnych serwerów proxy, których możemy użyć z Jenkins, to Apache i Nginx, Haproxy, Microsoft IIS, Envoy i inne. Oczywiście możesz także skonfigurować inne odwrotne proxy z Jenkinsem, a wybór którego użyć będzie zależeć od twoich wymagań i infrastruktury.
Jednak po skonfigurowaniu Jenkinsa z odwrotną proxy możesz napotkać błąd, taki jak „błąd! Odwrotne proxy błędnie skonfigurowane."
Ten samouczek obejmie podstawowe metody, które można użyć do diagnozowania i naprawy takiego błędu.
Co powoduje ten błąd?
Dobrze jest pamiętać, że nie ma określonej odpowiedzi na temat tego, co może spowodować ten błąd. Odwrotna konfiguracja proxy będzie się różnić w zależności od serwera docelowego. Jednak główną przyczyną tego błędu brakuje nagłówków w żądaniu od odwrotnego proxy do Jenkins.
Jak naprawić ten błąd?
Bez względu na to, z jakiej odwrotnej proxy używasz, musisz upewnić się, że następujące nagłówki są zawarte we wszystkich prośbach do Jenkins.
Możesz to zrobić, dodając nagłówki do konfiguracji odwrotnej proxy. Nagłówki obejmują:
Możesz użyć konfiguracji mod_rewrite w Apache i dodać następujące opcje:
Requestheader Ustaw x-forwarted-prototo „https”
Requestheader ustawił X-forward-port „443”
W przypadku Nginx użyj konfiguracji:
proxy_set_header x-forward-croto https;
proxy_set_header x-forward-port 443;
W Haproxy:
HTTP-Request Set-Header X-Forwarted-Port 443
HTTP-REQUEST ADD-HEADER X-FORTHED-PROTO HTTPS
Sprawdź przychodzące nagłówki
Możesz sprawdzić nagłówki, które docierają do Jenkinsa z odwrotnej proxy za pomocą skryptu pokazanego poniżej:
def req = org.Kohsuke.zszywacz.Zszywacz.CurrentRequest
def Headernames = req.Getheadernames ();
When (nazwy headern.HASMoreElements ())
def Headername = Nazwy głową.NextElement ();
Jeśli (!Nazwa nagłówka.Tolowercase ().startswith („x-forward”)) kontynuuj
println (HeaderName+":");
def nagłówki = req.Getheaders (nazwa głową);
podczas gdy nagłówki.HASMoreElements ())
def Headervalue = nagłówki.NextElement ();
println („\ t” + headervalue);
Powyższy skrypt powinien zwrócić nagłówki, które docierają do Jenkins. Przykład oczekiwanego wyjścia:
X-forwarte-Host:
domena.com
X-forwarded-Proto:
https
X-forward-Port:
443
X-forwarded-for:
Jeśli widzisz nagłówki X-forwarded-Proto i X-forward-Port, odwrotny proxy jest prawidłowo skonfigurowany. Jeśli jednak problem będzie się utrzymywał, sprawdź serwlet Jenkins.
Wniosek
Omówiliśmy jeden z typowych błędów, które możesz napotkać podczas korzystania z Jenkinsa z odwrotną proxy i jak możesz to naprawić.