Предположим, у меня есть много веб-сайтов с разными доменными именами, domain1.com
, domain2.com
и т. Д. Я настроил правильную конфигурацию virtualhosts для этих сайтов в 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 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