J'exécute deux services derrière un serveur Apache: Jenkins (port 8080) et SonarQube (port 9000).
Ma configuration apache ressemble à ceci:
<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>
Tout semble bien fonctionner, sauf que Jenkins se plaint de ce message: Il semble que la configuration de votre proxy inverse soit rompue.
Lorsque j'exécute le test ReverseProxySetupMonitor fourni par Jenkins, le message d'erreur indique que quelque chose avec le proxy inverse n'est pas configuré correctement, car il ne remplace pas http par 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
[...]
Cela n'est apparu qu'après avoir activé SSL sur le serveur (qui utilise maintenant un certificat auto-signé).
Question: Comment puis-je corriger la configuration du proxy inverse pour que Jenkins soit satisfait? Points bonus pour des conseils sur la façon d'améliorer le fichier de configuration d'apache.
J'ai déjà vérifié les deux questions connexes suivantes:
sudo a2enmod headers
, sinon j'obtiendraisInvalid command 'RequestHeader'