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:
la source
sudo a2enmod headers
, sinon j'obtiendraisInvalid command 'RequestHeader'
ProxyPassReverse
directives pour le même chemin (/
)?Configuration de Windows Apache Front-end pour Jenkins
Les principales différences ici sont:
Ma configuration:
L'installation était à d: \ (pas c: \ - adaptez ceci à vos besoins)
Jenkins est sur le port 8080
Décompressez Apache httpd-2.4.18-win64-VC14.zip (de http://www.apachelounge.com/download/ ) vers d: \.
Installez OpenSSL Win64OpenSSL_Light-1_0_2f.exe ( http://slproweb.com/products/Win32OpenSSL.html ) dans d: \ OpenSSL-Win64
Créez le certificat SSL:
cd dans le répertoire bin d'OpenSSL et lancez la magie:
Copiez les fichiers du serveur. * De d: \ OpenSSL-Win64 \ bin vers D: \ Apache24 \ conf
Modifiez d: \ Apache24 \ conf \ httpd.conf:
Recherchez et remplacez "c: /" par "d: /"
Changer après la ligne "Listen 80", en ajoutant "Listen 443":
Décommentez ces lignes:
Mettez à jour "#ServerName www.example.com:80" pour:
Ajoutez ceci à la fin:
Je n'ai pas empêché Jenkins d'écouter sur le port 8080, donc je peux toujours me connecter en cas d'échec d'Apache. Mon objectif en utilisant https est de masquer les paramètres.
la source