Jenkins fikser den omvendte proxy

Jenkins fikser den omvendte proxy

En omvendt proxy refererer til en server som brukes til å hente ressurser på vegne av en klient fra en eller flere servere.

Omvendte fullmakter er et kraftig og populært verktøy som inkluderer belastningsbalansering på flere servere, noe som forbedrer sikkerheten ved å skjule applikasjonsbackend, innholdsbufring og mer.

Når du jobber med Jenkins, kan du bruke en omvendt proxy for å la brukere få tilgang til Jenkins -dashbordet ved hjelp av et domene eller underdomen. En omvendt proxy kan også tillate deg å forbedre sikkerheten til Jenkins -klyngen. Omvendt proxy vil være en mellom for en klient og Jenkins-serveren.

Et eksempel på omvendte fullmakter vi kan bruke med Jenkins inkluderer Apache og Nginx, HAProxy, Microsoft IIS, Envoy og mer. Selvfølgelig kan du også konfigurere andre omvendte fullmakter med Jenkins, og valget av hvilken du skal bruke som vil avhenge av dine spesifikke krav og infrastruktur.

Når du først konfigurerer Jenkins med en omvendt proxy, kan du imidlertid møte en feil som "Feil! Omvendt proxy feilkonfigurert.”

Denne opplæringen vil dekke grunnleggende metoder du kan bruke til å diagnostisere og fikse en slik feil.

Hva forårsaker denne feilen?

Det er godt å huske at det ikke er noe bestemt svar på hva som kan forårsake denne feilen. Den omvendte proxy -konfigurasjonen vil variere avhengig av målserveren. Den primære årsaken til denne feilen mangler imidlertid overskrifter i forespørselen fra omvendt proxy til Jenkins.

Hvordan fikse denne feilen?

Uansett hvilken omvendt proxy du bruker, må du sørge for at følgende overskrifter er inkludert i alle forespørsler til Jenkins.

Du kan gjøre dette ved å legge overskriftene til din omvendte proxy -konfigurasjon. Overskriftene inkluderer:

  • X-spiss-proto.
  • X-spiss-vert
  • X-spiss-port

Du kan bruke MOD_REWRITE -konfigurasjonen i Apache og legge til følgende alternativer:

RequestHeader Set X-Forwarded-Proto "HTTPS"
RequestHeader Set X-Forwarded-Port "443"

For nginx, bruk konfigurasjonen:

proxy_set_header x-forwarded-proto https;
Proxy_set_header X-Forwarded-Port 443;

I haproxy:

HTTP-Request Set-Header X-Forwarded-Port 443
HTTP-Request Add-Header X-Forwarded-Proto HTTPS

Kontroller de innkommende overskriftene

Du kan sjekke overskriftene som når Jenkins fra omvendt proxy ved å bruke skriptet som er vist nedenfor:

def req = org.Kohsuke.stiftemaskin.Stiftemaskin.CurrentRequest
def headnames = req.getheadernames ();
mens (overskrift.hasMoreelements ())
def headname = headnames.nextElement ();
hvis (!Headname.Tolowercase ().StartSwith ("X-Forward")) Fortsett
println (headername+":");
def headers = req.Getheaders (Headername);
mens (overskrifter.hasMoreelements ())
def headValue = headers.nextElement ();
println ("\ t" + overskrift);

Skriptet over skal returnere overskriftene som når Jenkins. Et eksempel på forventet utgang:

X-spiss-vert:
domene.com
X-spiss-proto:
https
X-spiss-port:
443
X-spiss-for:

Hvis du ser X-Forwarded-Proto og X-fremover-portoverskriftene, er den omvendte proxy konfigurert riktig. Imidlertid, hvis problemet vedvarer, sjekk Jenkins Servlet.

Konklusjon

Vi diskuterte en av de vanlige feilene du kan møte når du bruker Jenkins med en omvendt proxy og hvordan du kan fikse det.