Estoy ejecutando dos servicios detrás de un servidor Apache: Jenkins (Puerto 8080) y SonarQube (Puerto 9000).
Mi configuración de apache se ve así:
<VirtualHost *:80>
ServerName server
Redirect permanent / https://server.domain.com/
</VirtualHost>
<VirtualHost *:80>
ServerName server.domain.com
Redirect permanent / https://server.domain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName server.domain.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
ProxyPass /jenkins http://localhost:8080/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8080/jenkins
ProxyPassReverse /jenkins http://server.domain.com/jenkins
ProxyPassReverse /jenkins https://server.domain.com/jenkins
ProxyPass /sonar http://localhost:9000/sonar nocanon
ProxyPassReverse /sonar http://localhost:9000/sonar
AllowEncodedSlashes NoDecode
ProxyRequests Off
ProxyPreserveHost On
<Proxy http://localhost:8080/*>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
Todo parece estar funcionando bien, excepto que Jenkins se queja con este mensaje: parece que su configuración de proxy inverso está rota.
Cuando ejecuto la prueba ReverseProxySetupMonitor proporcionada por Jenkins, el mensaje de error indica que algo con el proxy inverso no está configurado correctamente, ya que no reemplaza http con https:
$ curl -iLk -e https://server.domain.com/jenkins/manage https://server.domain.com/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/test
[...]
404 http://server.domain.com/jenkins/manage vs. https://server.domain.com/jenkins/manage
[...]
Esto solo apareció después de habilitar SSL en el servidor (que ahora usa un certificado autofirmado).
Pregunta: ¿Cómo soluciono la configuración del proxy inverso para que Jenkins esté feliz? Puntos de bonificación para obtener consejos sobre cómo mejorar el archivo de configuración de apache.
Ya revisé las siguientes dos preguntas relacionadas:
sudo a2enmod headers
, de lo contrario me pondríaInvalid command 'RequestHeader'