Jenkins fissa il proxy inverso

Jenkins fissa il proxy inverso

Un proxy inverso si riferisce a un server utilizzato per recuperare le risorse per conto di un client da uno o più server.

I proxy inversi sono uno strumento potente e popolare che include il bilanciamento del carico su più server, migliorando la sicurezza nascondendo il backend dell'applicazione, la memorizzazione nella cache dei contenuti e altro ancora.

Quando si lavora con Jenkins, è possibile utilizzare un proxy inverso per consentire agli utenti di accedere alla dashboard Jenkins utilizzando un dominio o un sottodominio. Un proxy inverso può anche consentire di migliorare la sicurezza del cluster Jenkins. Il proxy inverso sarà un intervento via per un client e il server Jenkins.

Un esempio di proxy inversi che possiamo usare con Jenkins include Apache e Nginx, Haproxy, Microsoft IIS, Envoy e altro ancora. Naturalmente, puoi anche configurare altri proxy inversi con Jenkins e la scelta di quale utilizzare dipenderà dai tuoi requisiti e infrastrutture specifici.

Tuttavia, una volta che si configura Jenkins con un proxy inverso, è possibile riscontrare un errore come "Errore! Proxy inverso errata."

Questo tutorial coprirà i metodi di base che è possibile utilizzare per diagnosticare e correggere tale errore.

Cosa causa questo errore?

È bene ricordare che non esiste una risposta definitiva su ciò che può causare questo errore. La configurazione proxy inversa varierà in base al server di destinazione. Tuttavia, la causa principale di questo errore mancano le intestazioni nella richiesta dal proxy inverso a Jenkins.

Come correggere questo errore?

Non importa quale proxy inverso utilizzi, è necessario assicurarsi che le seguenti intestazioni siano incluse in tutte le richieste a Jenkins.

Puoi farlo aggiungendo le intestazioni alla configurazione del proxy inverso. Le intestazioni includono:

  • X-forwardd-Proto.
  • X-forwardd-host
  • X-forward-Port

È possibile utilizzare la configurazione Mod_Rewrite in Apache e aggiungere le seguenti opzioni:

Requestheader set x-forwarded-proto "https"
Requestheader set x-forwarded-port "443"

Per Nginx, utilizzare la configurazione:

proxy_set_header x-forwarded-proto https;
proxy_set_header x-forwarded-port 443;

In Haproxy:

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

Verifica le intestazioni in arrivo

Puoi controllare le intestazioni che stanno raggiungendo Jenkins dal proxy inverso usando lo script mostrato di seguito:

def req = org.Kohsuke.cucitrice.Cucitrice.CurrentRequest
def headernames = req.getheadernames ();
mentre (capoternames.hasmoreelements ())
Def HeadName = HeadNames.NextElement ();
Se (!principale.tolowercase ().startWith ("x-forward")) Continua
println (headername+":");
Def Headers = req.getheaders (caporename);
mentre (intestazioni.hasmoreelements ())
Def HeadValue = Headers.NextElement ();
println ("\ t" + heawervalue);

La sceneggiatura sopra dovrebbe restituire le intestazioni che stanno raggiungendo Jenkins. Un esempio dell'output previsto:

X-forwardd-host:
dominio.com
X-Forwarded-Proto:
https
X-forward-Port:
443
X-forward-for:

Se vedi le intestazioni a portata X-forwardd e X-forwardd-port, il proxy inverso è configurato correttamente. Tuttavia, se il problema persiste, controlla il servlet di Jenkins.

Conclusione

Abbiamo discusso di uno degli errori comuni che potresti incontrare quando usi Jenkins con un proxy inverso e come puoi risolverlo.