Apacheサーバーの背後でJenkins(ポート8080)とSonarQube(ポート9000)の2つのサービスを実行しています。
私のApache設定は次のようになります:
<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>
Jenkinsがこのメッセージで不平を言っていることを除いて、すべてが正常に機能しているようです。リバースプロキシの設定が壊れているようです。
Jenkinsが提供するReverseProxySetupMonitorテストを実行すると、httpが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
[...]
これは、サーバーでSSLを有効にした後にのみ表示されます(現在、自己署名証明書を使用しています)。
質問: Jenkinsが満足するように、リバースプロキシのセットアップを修正するにはどうすればよいですか?Apacheの設定ファイルを改善する方法に関するヒントのボーナスポイント。
次の2つの関連する質問を既に確認しました。
sudo a2enmod headers
そうでなければ、私はなるだろう、Invalid command 'RequestHeader'