your that que parece mal inverso está configuración broken appears nginx jenkins proxy

that - jenkins nginx ubuntu



Jenkins: Cómo configurar Jenkins detrás del proxy inverso Nginx para esclavos JNLP para conectarse (1)

El puerto JNLP parece usar un protocolo binario, no un protocolo HTTP basado en texto, por lo que desafortunadamente no se puede usar un proxy inverso a través de NGINX como pueden ser las páginas normales de Jenkins.

En cambio, debes:

  1. Configure Global Security> Marque "Habilitar seguridad" y configure un "Puerto TCP fijo para agentes esclavos JNLP". Esto hará que todas las páginas de Jenkins emitan encabezados HTTP adicionales que especifiquen este puerto: X-Hudson-CLI-Port, X-Jenkins-CLI-Port, X-Jenkins-CLI2-Port.

  2. Permita su puerto fijo TCP JNLP a través de cualquier firewall para que los clientes CLI y los agentes JNLP puedan llegar directamente al servidor Jenkins en el back-end.

  3. Establezca la propiedad del sistema hudson.TcpSlaveAgentListener.hostName en el nombre de host o la dirección IP de su servidor Jenkins en el back-end. Esto hará que todas las páginas emitan un encabezado HTTP adicional (X-Jenkins-CLI-Host) que contiene este nombre de host especificado. Esto le dice a los clientes de CLI dónde conectarse, pero supuestamente no a los agentes de JNLP.

  4. Para cada una de las máquinas esclavas de compilación en la lista de nodos de jenkins.mydomain.com/computer/ que utiliza el método de jenkins.mydomain.com/computer/ agentes esclavos a través de Java Web Start", haga clic en la computadora, haga clic en Configurar, haga clic en el botón Avanzado ... en el lado derecho debajo del método de lanzamiento, y establezca el campo "Conexión de túnel a través" apropiadamente. Lea la ayuda del signo de interrogación. Probablemente solo necesite la sintaxis "HOST:", donde HOST es el nombre de host o la dirección IP de su servidor Jenkins en el back-end.

Descargo de responsabilidad: aún no he probado el paso 4, pero se menciona en el primer enlace a continuación.

Referencias

Estoy intentando configurar un maestro de Jenkins y un nodo esclavo de Jenkins, donde el maestro de Jenkins está detrás del proxy inverso Nginx en un servidor diferente con terminación SSL. La configuración nginx es la siguiente:

upstream jenkins { server <server ip>:8080 fail_timeout=0; } server { listen 443 ssl; server_name jenkins.mydomain.com; ssl_certificate /etc/nginx/certs/mydomain.crt; ssl_certificate_key /etc/nginx/certs/mydomain.key; location / { proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect http:// https://; proxy_pass http://jenkins; } } server { listen 80; server_name jenkins.mydomain.com; return 301 https://$server_name$request_uri; }

El puerto TCP para agentes JNLP se configura como 50000 en la configuración de seguridad global maestra de Jenkins. El puerto 50000 está configurado para ser accesible desde cualquier lugar en la máquina host.

El esclavo JNLP se inicia con el siguiente comando:

java -jar slave.jar -jnlpUrl https://jenkins.mydomain.com/computer/slave-1/slave-agent.jnlp -secret <secret>

El esclavo JNLP no puede conectarse al puerto JNLP configurado en el maestro:

INFO: Connecting to jenkins.mydomain.com:50000 (retrying:4) java.net.ConnectException: Connection timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at hudson.remoting.Engine.connect(Engine.java:400) at hudson.remoting.Engine.run(Engine.java:298)

¿Cuál es la configuración requerida para que el esclavo JNLP se conecte al maestro Jenkins?