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)

Вот как будет поступать запрос:

  1. Принять запрос на 443 из браузера
  2. AWS ALB перехватывает запрос, у которого есть группа слушателей / целевая группа, которая покрывает (от 443 до 80)
  3. Теперь прокси-сервер, такой как apache2, должен пересылать запрос, полученный с 80 на 8080.

Итак, вам не хватает 3-го шага, который довольно прост. Вы можете прочитать /questions/21717857/prilozhenie-spring-boot-rabotaet-na-portu-80/21717880#21717880 для настройки.

Не говоря уже о том, что ваш домен должен указывать на ALB. Это можно сделать в Route53. Это помогает ALB получать запрос, сделанный браузером. В основном шаг-1 на работу.

Что сработало для меня: я добавил 2 слушателей:

  1. Для перенаправления HTTP(80) -> HTTPS(443)

  2. Тогда для второго слушателя, прямое правило, HTTPS(443) -> My Target для ALB

Вы можете использовать правило перенаправления в вашем балансировщике нагрузки, чтобы перенаправить запрос с HTTPS на порт 8080.

Ссылка: https://aws.amazon.com/about-aws/whats-new/2018/07/elastic-load-balancing-announces-support-for-redirects-and-fixed-responses-for-application-load-balancer/

шаги:

  1. Перейти к балансировщику нагрузки

  2. Добавьте новое правило прослушивателя, которое перенаправляет HTTPS на 8080.

Надеюсь, это поможет!

Другие вопросы по тегам