Я намагаюся створити сервер з декількома веб-додатками, які будуть обслуговуватися через apache VirtualHost (apache, що працює на одному сервері). Моє основне обмеження полягає в тому, що кожен веб-додаток повинен використовувати шифрування SSL. Деякий час гуглившись і переглянувши інші питання щодо stackoverflow, я написав таку конфігурацію для 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>
Навіть незважаючи на те, що https://host.example.org:8443 є доступним, https://host.example.org це не так, що перешкоджає призначенню моєї конфігурації віртуального хоста. Firefox скаржиться на те, що, незважаючи на те, що він успішно підключився до сервера, з'єднання було перервано. Я також отримую таке попередження в ercher.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
У веб-додатку (сервер Tomcat) журнал доступу показує дивний запит доступу:
"?O^A^C / HTTP/1.1" 302
Далі йде правильний запит на доступ, який я отримую, коли я підключаюся безпосередньо до https://host.example.org:8443 :
"GET / HTTP/1.1" 302
Нарешті, я також зазначу, що віртуальний хост працює чудово, коли я не використовую SSL.
Як я можу змусити цю роботу?
ProxyPreserveHost On
що це майже завжди неправильно, марно і майже завжди ламаєтьсяProxyPassReverse
. Як бічна нотаProxyRequests off
- це за замовчуванням, таким чином, надлишковим.