У меня есть два общедоступных веб-сайта (foo.com и bar.com), которые указываются на балансировщик оборудования. Это аппаратное перенаправляет трафик на мой сервер следующим образом:Маршрут двух доменов к тому же экземпляру JBoss
http://foo.com ==> порт 7700
https://foo.com ==> порт 7701
http://bar.com ==> порт 7800
https://bar.com ==> порт 7801
Мой сервер в настоящее время является старым ящиком iPlanet который определяет два виртуальных сервера (foo.com для 7700, 7701 и bar.com для 7800, 7801). Поскольку балансировщик нагрузки направляется прямо к этим портам, все работает нормально.
Теперь мне нужно перенести эти веб-сайты в конфигурацию Apache 2.2 + JBoss 6.0, и я в настоящее время не понимаю, что лучше всего сделать для этого.
Я уже настроил Apache для прослушивания моих четырех портов (7700,7701,7800, 7801) и настроил SSL для 7701,7801. Я предполагаю, что предпочтительно, чтобы Apache обрабатывал SSL-подтверждения и соединения. Я создал 4 виртуальных записи хостов в Apache следующим образом:
<VirtualHost *:7700>
DocumentRoot "/htdocs/foo.com"
ServerName foo.com
</VirtualHost>
<VirtualHost *:7701>
DocumentRoot "/htdocs/foo.com"
ServerName foo.com
SSLEngine on
SSLCipherSuite ALL:...
SSLCertificateFile "/cert/foo.com.crt"
SSLCertificateKeyFile "/cert/foo.com.key"
</VirtualHost>
<VirtualHost *:7800>
DocumentRoot "/htdocs/bar.com"
ServerName bar.com
</VirtualHost>
<VirtualHost *:7801>
DocumentRoot "/htdocs/bar.com"
ServerName bar.com
SSLEngine on
SSLCipherSuite ALL:...
SSLCertificateFile "/cert/bar.com.crt"
SSLCertificateKeyFile "/cert/bar.com.key"
</VirtualHost>
Я проверил это со статическим контентом, а как HTTP и HTTPS соединения работают правильно.
Для моей конфигурации JBoss в настоящее время мои приложения развернуты как/foo и/bar, хотя я не знаю, должна ли это быть окончательная конфигурация. То, что я хочу сделать это:
вперед весь трафик от 7700/7701 до http://localhost:8080/foo, и от 7800/7801 до http://localhost:8080/bar. Я не хочу видеть/foo и/bar в общедоступном URL-адресе, однако - пользователь должен просто увидеть http://www.foo.com и http://www.bar.com.
Есть ли способ настроить mod_jk для пересылки запросов на определенный URL-адрес? Или я должен смотреть, как иметь JBoss-хост foo.com на портах A и bar.com на порту B - и просто иметь mod_jk вперед для каждого порта отдельно?
Я не уверен, что переписывание URL будет работать. Я думаю, проблема заключается в том, что я не могу найти способ заставить JBoss прослушивать порт 7700 для обслуживания содержимого для foo.war и прослушивать порт 7800 для обслуживания содержимого для bar.war. Мне очень странно, что JBoss на самом деле прослушивает несколько портов, но не позволяет мне указывать контент, который подается на каждом из них. –
@Fibber - я обновил свой ответ на основе вашего комментария; Я думаю, вы помогли мне найти более простое решение. – mlschechter
Большое спасибо, что сделал трюк! Я должен был внести небольшую корректировку в операторы ProxyPass и ProxyPassReverse, чтобы он работал правильно: я добавил конечную косую черту в имя сервлета, то есть localhost: 8080/foo/- без нее JBoss ищет URI/foofoo:) –