Saya mencoba menyiapkan server dengan beberapa aplikasi web yang semuanya akan dilayani melalui apache VirtualHost (apache berjalan di server yang sama). Kendala utama saya adalah bahwa setiap aplikasi web harus menggunakan enkripsi SSL. Setelah googling sebentar dan melihat pertanyaan lain tentang stackoverflow, saya menulis konfigurasi berikut untuk VirtualHost:
<VirtualHost 1.2.3.4:443>
ServerName host.example.org
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
</VirtualHost>
Meskipun https://host.example.org:8443 dapat diakses, https://host.example.org tidak, yang mengalahkan tujuan konfigurasi virtual host saya. Firefox mengeluh bahwa, meskipun berhasil terhubung ke server, koneksi terputus. Saya juga mendapatkan peringatan berikut di error.log apache:
proxy: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be host.example.org for uri
Pada aplikasi web (server Tomcat) log akses menunjukkan permintaan akses aneh:
"?O^A^C / HTTP/1.1" 302
Berikut ini adalah permintaan akses kembali yang benar yang saya dapatkan ketika saya terhubung langsung ke https://host.example.org:8443 :
"GET / HTTP/1.1" 302
Akhirnya saya juga harus menyebutkan bahwa virtual host berfungsi dengan baik ketika saya tidak menggunakan SSL.
Bagaimana saya bisa membuat ini berfungsi?
ProxyPreserveHost On
hampir selalu salah, tidak berguna dan hampir selalu rusakProxyPassReverse
. Sebagai catatanProxyRequests off
adalah default, sehingga berlebihan.