Предположим, у меня много сайтов с разными доменными именами, domain1.com
, domain2.com
и т.д. Я настроил правильную конфигурацию виртуальных хостов для этих сайтов в wildfly. Также имеются правильные записи DNS. Как направить на мой сервер запросы на эти домены wildfly?
Я просто запускаю wildfly на порты 80 и 443? Что-то мне подсказывает, что это плохая идея, поскольку wildfly по умолчанию не работает на этих портах. Для работы wildfly на этих портах требуется привязка к этим портам как привилегированного пользователя, а затем переключение на непривилегированного пользователя. Сложность и хлопоты, связанные с этим, говорят о том, что это неправильно.
Я бегу за nginx или apache2? Мое приложение динамически запускает веб-сайты и конфигурацию виртуального хоста. Могу я просто перенаправить все запросы wildfly и позволить ей разобраться с этим?
???
Вариант 1 возможен, но, как вы правильно предсказали, это не лучший подход. Чтобы работать на порте 80 или 443, вам нужен привилегированный пользователь, и вы напрямую открываете доступ к java-серверу, облегчая возникновение проблем.
Итак, запустите nginx, определите там домены и настройте upstream
и proxy_pass
для обратного прокси к вашим экземплярам wildfly. Вы получаете балансировку нагрузки бесплатно, вы можете обрабатывать ssl на nginx вместо wildfly, и всю настройку намного проще поддерживать и масштабировать. Вы можете настроить выделенный кластер wildfly для каждого домена и иметь отдельный upstream
определение, или вы можете начать с одного экземпляра с отдельными веб-контекстами, например.
upstream jboss {
server 192.168.33.11:8080;
}
server {
listen 443;
server_name example.com;
location / {
proxy_pass http://jboss/webapp1;
}
}
server {
listen 443;
server_name otherdomain.com;
#pass the request to another .war dewployed on jboss
location / {
proxy_pass http://jboss/webapp2;
}
}
Вы можете найти больше информации на сайт nginx