Saya menjalankan dua layanan di belakang server Apache: Jenkins (Port 8080) dan SonarQube (Port 9000).
Konfigurasi apache saya terlihat seperti ini:
<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>
Semuanya tampaknya berfungsi dengan baik, kecuali bahwa Jenkins mengeluh dengan pesan ini: Tampaknya pengaturan proxy terbalik Anda rusak.
Ketika saya menjalankan tes ReverseProxySetupMonitor yang disediakan oleh Jenkins, pesan kesalahan menunjukkan bahwa sesuatu dengan proxy terbalik tidak diatur dengan benar, karena tidak menggantikan http dengan 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
[...]
Ini hanya muncul setelah saya mengaktifkan SSL di server (yang sekarang menggunakan sertifikat yang ditandatangani sendiri).
Pertanyaan: Bagaimana cara saya memperbaiki pengaturan proxy terbalik sehingga Jenkins senang? Poin bonus untuk kiat tentang cara meningkatkan file konfigurasi apache.
Saya sudah memeriksa dua pertanyaan terkait berikut:
sudo a2enmod headers
, kalau tidak saya akan mendapatkanInvalid command 'RequestHeader'