tomcat 8080 позади AWS Application Load Balancer 443
Моя цель - 443 (ALB)->8080 (TOMCAT)
Я использую экземпляр EC2 tomcat на 8080.
Вот этот апплет на 8080
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
port="8080" scheme="http"
/>
У меня есть ALB, прослушивающий 443 с сертификатом и настроенный для передачи целевой группе 8080.
Таким образом, идея https://www.website.com/myapp -> www.mywebsite.com:8080/myapp
Я знаю, что мое приложение работает нормально, потому что, если я открою публичный доступ к 8080, я смогу полностью запустить приложение.
У меня что-то неправильно настроено, потому что когда я захожу на сайт https://www.website.com/myapp
Я, кажется, перенаправлен на: www.website.com/myapp
Кажется, что я могу нормально добраться до tomcat, но затем он перенаправляет меня обратно на http, когда отвечает. Что я делаю неправильно?
Спасибо!
1 ответ
Приложение Spring Boot работает на 8080 с использованием сервера tomcat. Другие приложения / серверы, такие как apache2, работают на 80 портах. В идеале ALB должен указывать на порт 80, и вы должны установить прокси-сервер на 80, который делегирует ваши запросы на tomcat (порт:8080)
Вот как будет поступать запрос:
- Принять запрос на 443 из браузера
- AWS ALB перехватывает запрос, у которого есть группа слушателей / целевая группа, которая покрывает (от 443 до 80)
- Теперь прокси-сервер, такой как apache2, должен пересылать запрос, полученный с 80 на 8080.
Итак, вам не хватает 3-го шага, который довольно прост. Вы можете прочитать /questions/21717857/prilozhenie-spring-boot-rabotaet-na-portu-80/21717880#21717880 для настройки.
Не говоря уже о том, что ваш домен должен указывать на ALB. Это можно сделать в Route53. Это помогает ALB получать запрос, сделанный браузером. В основном шаг-1 на работу.
Что сработало для меня: я добавил 2 слушателей:
Для перенаправления HTTP(80) -> HTTPS(443)
Тогда для второго слушателя, прямое правило, HTTPS(443) -> My Target для ALB
Вы можете использовать правило перенаправления в вашем балансировщике нагрузки, чтобы перенаправить запрос с HTTPS на порт 8080.
шаги:
Перейти к балансировщику нагрузки
Добавьте новое правило прослушивателя, которое перенаправляет HTTPS на 8080.
Надеюсь, это поможет!