¿Cómo configurar HAProxy para pasar una URL no codificada al backend de Jenkins?

¿Cómo configurar HAProxy para pasar una URL no codificada al backend de Jenkins?

Tengo HAProxy configurado para terminar las conexiones SSL para un servidor Jenkins CI, haciendo proxy al backend del servidor Jenkins CI a través de HTTP simple. Puedo realizar con éxito [hasta ahora] todas las operaciones que necesito en la interfaz web del servidor Jenkins CI, incluida la administración de la instancia.

Sin embargo, obtengola advertencia de Jenkins "la configuración del proxy inverso no funciona". Esto se debe a una verificación más estricta de la configuración del proxy desde la versión 1.572 de Jenkins, que utiliza una URL en forma de:

https://host-name/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/a%2Fb/

para probar la configuración del proxy inverso. La causa típica de la advertencia es la decodificación de %2Fen una barra diagonal por parte del proxy inverso, lo que genera un 404.

Parece haber soluciones de configuración bien documentadas para las configuraciones de proxy inverso de Apache y nginx para eliminar esta advertencia. Lo que no he podido encontrar es algo similar a la opción "AllowEncodedSlashes On" de Apache, o la configuración "proxy_pass" de nginx, o incluso un ejemplo de configuración de Jenkins detrás de HAProxy (que estoy usando en lugar de Apache o nginx porque ya tener HAProxy implementado para otras aplicaciones).

  • Sistema operativo: CentOS 6.6
  • Versión de HAProxy: 1.5.2-2
  • Versión de Jenkins: 1.610

Respuesta1

Resultó que esto no era un problema con la codificación/decodificación de URL. Fue simplemente un error del operador de mi parte: al cancelar SSL en cualquier proxy,debeasegurar que elX-Proxy-Protoel encabezado está configurado enhttpspara que todas las URL generadas por Jenkins de esta manera utilicen un esquema dehttps. Me perdí la línea en la documentación de la página de solución de problemas. Adición sencilla:

http-request set-header X-Forwarded-Proto https

A la definición de backend se eliminó la advertencia.

información relacionada