Я пытаюсь настроить сервер с несколькими веб-приложениями, которые будут обслуживаться через Apache VirtualHost (Apache работает на одном сервере). Моим главным ограничением является то, что каждое веб-приложение должно использовать шифрование SSL. Пройдя некоторое время, погуглив и посмотрев другие вопросы о стековом потоке, я написал следующую конфигурацию для 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 жалуется на то, что, хотя он успешно подключился к серверу, соединение было прервано. Я также получаю следующее предупреждение в apache error.log:
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
по умолчанию, таким образом, излишним.localhost
он не работал.Попробуйте этот конфиг
Если вашему приложению необходим доступ к информации SSL из прокси-соединения, вам следует рассмотреть возможность использования mod_proxy_ajp и коннектора tomcat ajp1.3.
источник
Но если ваша цель - запустить несколько веб-приложений с поддержкой ssl на одном сервере. добавление apache впереди не приведет к их балансировке с помощью вышеуказанного конфига, вам все равно понадобится балансировщик нагрузки или вы можете использовать прокси-балансировочный модуль apache с чем-то вроде следующего:
источник
Что я не понимаю, так это то, почему вам нужно иметь SSL-соединение от вашего apache к вашему приложению, которое, кажется, находится на той же машине ( http: // localhost: 8443 / ).
Я предполагаю, что обычный способ настроить такие вещи - это иметь apache, обеспечивающий шифрование SSL на стороне клиента, например, в Интернете, и иметь незашифрованное соединение с приложением. Это также дает вам больше свободы для отладки ответов вашего приложения.
Еще одна вещь, о которой упоминал Дейв Чейни, - это использовать собственный разъем Tomcat для балансировки нагрузки и других функций.
источник
Вам действительно нужен прокси для службы HTTPS? Возможно, вы захотите прокси для службы не-ssl в localhost, например
источник
Сначала я посмотрю, можно ли сделать запрос с localhost на localhost: 8443 и посмотреть, успешно ли это (IE делает GET или wget http: // localhost: 8443 )
Я не совсем уверен, почему ваш виртуальный хост havin ga прослушивает порт 443, а затем передает его на другой хост ssl
почему приложение не может просто использовать 443 изначально? если вы не можете изменить его, вы можете просто использовать iptables для перенаправления порта
источник
Проверьте журнал ошибок SSL и убедитесь, что у вас нет ошибок, связанных с невозможностью проверки цепочки сертификатов CA.
источник