Назад | Перейти на главную страницу

Каков предпочтительный способ настройки Wildfly 10.0.0 Final для прослушивания порта 80 в Ubuntu 14.04.4 LTS?

Я установил Wildfly 10.0.0 Final на Ubuntu 14.04.4 LTS, используя это сценарий.

Все работает нормально.

Моя проблема в том, что wildfly прослушивает порт 28080 (установка скрипта по умолчанию), и я могу перейти на 8080, обновив standalone.xml. Но я бы хотел, чтобы wildfly прослушивал порт 80, но изменение standalone.xml для использования порта 80 не работает.

Похоже, только root может прослушивать порты ниже 1024, поэтому вопрос в том, какой способ предпочтительнее настроить Wildfly на серверах Ubuntu для прослушивания порта 80?

Я пробовал использовать nginx и работает, но странно то, что некоторые файлы, такие как css домашней страницы jboss по умолчанию, не могут быть найдены.

Вики по JBoss на developer.jboss.org перечисляет довольно полный список опций, которые, вероятно, также действительны для Wildfly; по существу вариации:

  • Держите сервер приложений на непривилегированном порту и используйте что-то, что прослушивает привилегированный порт для пересылки запросов на этот порт:
    • т.е. обратный прокси или балансировщик нагрузки
    • т.е. настроить переадресацию портов

Эти два варианта кажутся наиболее распространенными и предпочтительными.

Альтернативы:

  • Запустите сервер приложений как root для привязки к привилегированному порту (не совсем безопасно и плохая идеяTM)
  • Запустите сервер приложений от имени пользователя root для привязки к привилегированному порту, а затем сбросьте привилегии и запустите его от имени непривилегированного обычного пользователя, для которого я не нашел документально подтвержденной поддержки.

И последнее, но не менее важное, мой личный фаворит:

  • Использовать setcap чтобы позволить самому двоичному файлу java способность для привязки к привилегированным портам, без необходимости работать как root:

    sudo setcap 'cap_net_bind_service=+ep' /path/to/jre/bin/java

Единственный недостаток в том, что это немного неясно, но у вас также нет никаких внешних зависимостей от вашего приложения.

Да, настройка Nginx выступать в качестве обратного прокси перед wildfly - это ИМХО предпочтительный способ. Есть руководство по развертыванию на домашней странице Nginx о том, как это настроить.

Один из рекомендуемых способов «добраться» до ваших приложений, развернутых на WildFly через порт 80, - использовать HTTP-сервер Apache, который действует как обратный прокси-сервер, используя:

а) mod_proxy это самый простой способ, если у вас нет опыта работы с системным администратором, вы можете использовать HTTP (mod_proxy_http) или AJP (mod_proxy_ajp) в WildFly. Для сценариев балансировки нагрузки вы также используете mod_proxy_balancer.

б) mod_jk немного сложнее настроить и только AJP, обычно не требуется, поскольку Apache 2.2+ поставляется с mod_proxy_ajp.

в) mod_cluster, более сложный, но с интересными функциями для сценариев балансировки нагрузки, он использует mod_proxy за кулисами.

Вы можете использовать многие другие обратные прокси, например nginx или haproxy если хотите.

Другой подход - использовать переадресацию портов iptables:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Разработчики WildFly рекомендуют использовать что-то подобное, поскольку Undertow действительно быстр.