Ich verwende zwei Dienste hinter einem Apache-Server: Jenkins (Port 8080) und SonarQube (Port 9000).
Meine Apache-Konfiguration sieht folgendermaßen aus:
<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>
Alles scheint gut zu funktionieren, außer dass Jenkins sich mit dieser Meldung beschwert: Es scheint, dass Ihre Reverse-Proxy-Einrichtung defekt ist.
Wenn ich den von Jenkins bereitgestellten ReverseProxySetupMonitor- Test ausführe , zeigt die Fehlermeldung an, dass etwas mit dem Reverse-Proxy nicht korrekt eingerichtet ist, da http nicht durch https ersetzt wird:
$ 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
[...]
Dies wurde erst angezeigt, nachdem ich SSL auf dem Server aktiviert hatte (der jetzt ein selbstsigniertes Zertifikat verwendet).
Frage: Wie behebe ich das Reverse-Proxy-Setup, damit Jenkins zufrieden ist? Bonuspunkte für Tipps zur Verbesserung der Apache-Konfigurationsdatei.
Ich habe bereits die folgenden zwei verwandten Fragen geprüft:
quelle
sudo a2enmod headers
, sonst würde ichInvalid command 'RequestHeader'
ProxyPassReverse
Anweisungen für denselben Pfad verwenden (/
)?Windows Apache Front-End-Setup für Jenkins
Die Hauptunterschiede hier sind:
Mein Setup:
Die Installation war auf d: \ (nicht auf c: \ - passen Sie dies an Ihre Bedürfnisse an)
Jenkins ist auf Port 8080
Entpacken Sie Apache httpd-2.4.18-win64-VC14.zip (von http://www.apachelounge.com/download/ ) nach d: \.
Installieren Sie OpenSSL Win64OpenSSL_Light-1_0_2f.exe ( http://slproweb.com/products/Win32OpenSSL.html ) unter d: \ OpenSSL-Win64
Erstellen Sie das SSL-Zertifikat:
CD in das OpenSSL bin-Verzeichnis und führen Sie die Magie aus:
Kopieren Sie die Server. * -Dateien von d: \ OpenSSL-Win64 \ bin nach D: \ Apache24 \ conf
Bearbeiten Sie d: \ Apache24 \ conf \ httpd.conf:
Suchen und ersetzen Sie "c: /" durch "d: /"
Ändern Sie nach der Zeile "Listen 80" und fügen Sie "Listen 443" hinzu:
Kommentieren Sie diese Zeilen aus:
Aktualisieren Sie "#ServerName www.example.com:80" auf:
Fügen Sie dies am Ende hinzu:
Ich habe Jenkins nicht daran gehindert, Port 8080 abzuhören, sodass ich immer noch eine Verbindung herstellen kann, wenn Apache fehlschlägt. Mein Ziel bei der Verwendung von https ist es, Parameter auszublenden.
quelle