Пожалуйста, предоставьте более точную информацию о вашей среде и ошибках.
У меня были такие же потребности, как у вас. Пользователи получают доступ к нашей системе через сеть, где доступны только запросы на порт 80 или 443. Затем, когда клиент вызывает систему через порт 80, wildfly перенаправляет на порт 8443, и пользователь не может подключиться к системе. Решение состояло в том, чтобы перенаправить wildfly на порт 443 вместо 8443. Следуйте некоторым инструкциям для всех, кто ищет помощи в этой проблеме:
- В случае операционной системы на базе Linux порты до 1024 доступны для привязки только с привилегиями root.
- Не рекомендуется запускать wildfly или любой другой сервер веб-приложений с привилегиями root на сервере, ориентированном на производство.
- С другой стороны, попытка запустить wildfly с «обычным» пользователем, напрямую привязанным к порту 443 или 80, приведет к отказу в разрешении, например ошибкам.
Решение описанной выше проблемы состояло в том, чтобы привязать wildfly к портам 8080/8443 (без привилегий root) и попросить операционную систему перенаправить трафик с порта 80 на порт 8080 и с порта 443 на порт 8443. После этого настроить wildfly для перенаправления HTTP-запросы к https-запросам на порту 443 вместо 8443.
Итак, предполагая, что wildfly работает с http на порту 8080 и https на порту 8443 в ОС на базе Linux в качестве службы:
1) Остановить дикую муху: sudo service wildfly stop
2) Добавьте команды iptables в сценарий запуска /etc/init.d/wildfly, например:
if [ $launched -eq 0 ]; then
log_warning_msg "$DESC hasn't started within the timeout allowed"
log_warning_msg "please review file \"$JBOSS_CONSOLE_LOG\" to see the status of the service"
else
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443
fi
PS: вы добавляете правило для таблицы под названием «nat» со справочных страниц iptables:
натур:
К этой таблице обращаются, когда встречается пакет, создающий новое соединение.
Итак, если вы запросили https://localhost:443 перед созданием правила, соединение уже создано, поэтому nat таблица не применяется. Попробуйте с нового устройства.
Где $launched
— это переменная bash, представляющая состояние wildfly.
2) В файле standalone.xml создайте дополнительную запись привязки сокета:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<socket-binding name="https-external" port="443"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
...
</socket-binding-group>
Обратите внимание на новую запись тега <socket-binding name="https-external" port="443"/>
3) Измените http-listener для перенаправления на https-external вместо https:
<http-listener name="default" socket-binding="http" redirect-socket="https-external" max-header-size=...
Где изменение redirect-socket="https-external"
4) Перезапустите wildfly: запуск службы sudo wildfly
После запуска wildfly проверьте файл console.log, чтобы просмотреть отчет об ошибках.
Таким образом, если ваш раздел web.xml обеспечивает конфиденциальный транспорт:
....
<security-constraint>
...
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
...
Wildfly будет перенаправлять запросы на порт 80 или 8080 напрямую на порт 443 вместо 8443.
Замечания: Рекомендуется сделать резервные копии вашего скрипта /etc/init.d/wildfly и конфигурации файла standalone.xml, прежде чем вносить в них какие-либо изменения.
person
Duloren
schedule
22.09.2016
/var/log/wildfly/console.log
? - person James R. Perkins   schedule 02.07.2016