Ich habe Jenkins installiert und wollte den Standardport von 8080 auf 443 ändern. Das funktioniert, aber wenn ich zu den Jenkins-Einstellungen gehe, beschwert sich das System, dass der Reverse-Proxy nicht richtig konfiguriert ist. Wenn ich nachschaue, sehe ich, dass Jenkins versucht, URLs auf dem Port 8080 über Ajax aufzurufen, was offensichtlich zu einer 404-Fehlermeldung führt.
Ich verwende Apache und dies ist in der Konfiguration, die ich verwendet habe.
ServerName jenkins.mydomain.com
SSLCertificateFile /etc/letsencrypt/live/jenkins.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/jenkins.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Proxy http://localhost:8080*>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/ nocanon
ProxyPassReverse / http://localhost:8080/
ProxyPassReverse / http://jenkins.mydomain.com
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
Hat jemand eine Ahnung, was ich hier übersehe?
Antwort1
Dies liegt normalerweise daran, dass Sie Ihre Jenkins-URL nicht in der globalen Jenkins-Konfiguration festgelegt haben. Der Wert für „Jenkins-URL“ in der Jenkins-Konfiguration sollte mit der URL übereinstimmen, die Ihre Benutzer in die URL-Leiste ihres Browsers eingeben, um die Web-Benutzeroberfläche zu besuchen – in dem von Ihnen angegebenen Beispiel wäre der Wert https://jenkins.mydomain.com
.
Jenkins stellt allen AJAX-Aufrufen den Wert „Jenkins URL“ voran. Wenn die Jenkins-URL nicht festgelegt ist, wird standardmäßig etwas in der Art von verwendet http://${hostname}:${port}
, wobei hostname
der Hostname des Systems ist, auf dem Jenkins ausgeführt wird, und port
der Port ist, auf dem Jenkins ausgeführt wird (in Ihrem Fall 8080).