Правило в undertow-handlers.conf для перенаправления HTTP на HTTPS
У меня есть Wildfly за балансировщиком нагрузки, связь между ними всегда HTTP. Соединение между клиентом и балансировщиком нагрузки может быть HTTP или HTTPS.
Балансировщик нагрузки устанавливает заголовок (X-Forwarded-Proto), чтобы сообщить Wildfly, какой протокол использует клиент.
Я пытаюсь написать правило Undertow для перенаправления на HTTPS с учетом всех вышеперечисленных условий.
Это одна из моих наиболее успешных попыток (это правило записано в файле undertow-handlers.conf, и оно единственное в этом файле):
regex ('/(.*)') и regex(pattern='http',value='%{i,X-Forwarded-Proto}',full-match=true)-> редирект ( https://server.com/$ {1})
Когда клиент пытается получить доступ к URL-адресу, например: http: //server.com/myapp, он перенаправляется на https: //server.com, но путь / myapp отсутствует.
Как я могу исправить свое правило Undertow, чтобы сохранить полный путь?
1 ответ
Пытаться:
equals('http', %{SCHEME}) -> redirect(https://server.com/%U)
Или же
equals('http', %{i,X-Forwarded-Proto}) -> redirect(https://server.com/%U)
В зависимости от того, включили ли вы переадресацию прокси-адресов в прослушивателе HTTP (если вы выполняете откат, он автоматически обрабатывает X-Forwarded-Proto, поэтому он отображается в%{SCHEME}).