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:
sumber
sudo a2enmod headers
, kalau tidak saya akan mendapatkanInvalid command 'RequestHeader'
ProxyPassReverse
arahan untuk jalur yang sama (/
)?Pengaturan Windows Apache Front-end untuk Jenkins
Perbedaan utama di sini adalah:
Pengaturan saya:
Instal adalah ke d: \ (bukan c: \ - sesuaikan ini dengan kebutuhan Anda)
Jenkins ada di port 8080
Unzip Apache httpd-2.4.18-win64-VC14.zip (dari http://www.apachelounge.com/download/ ) ke d: \.
Instal OpenSSL Win64OpenSSL_Light-1_0_2f.exe ( http://slproweb.com/products/Win32OpenSSL.html ) ke d: \ OpenSSL-Win64
Buat sertifikat ssl:
cd ke direktori OpenSSL bin dan jalankan magic:
Salin server. * File dari d: \ OpenSSL-Win64 \ bin ke D: \ Apache24 \ conf
Edit d: \ Apache24 \ conf \ httpd.conf:
Cari dan ganti "c: /" dengan "d: /"
Ubah setelah baris "Dengarkan 80", tambahkan "Dengarkan 443":
Batalkan komentar pada baris ini:
Perbarui "#ServerName www.example.com:80" ke:
Tambahkan ini di akhir:
Saya tidak berhenti Jenkins mendengarkan pada port 8080, jadi saya masih dapat terhubung jika apache gagal. Tujuan saya dalam menggunakan https adalah untuk menyembunyikan parameter.
sumber