Веб-приложение Tomcat не получает запросы, отправленные через AWS ELB - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть 2 веб-приложения, которые выполняются на одном Tomcat в контейнере docker на экземпляре AWS EC2. Одно веб-приложение содержит 100% angular stati c контента, а другое - приложение REST. Когда я запускаю веб-приложения на своем ноутбуке, все работает нормально. Когда я запускаю контейнер docker на экземпляре EC2 и получаю доступ к веб-приложениям напрямую, используя publi c IP, все работает нормально. Однако, когда я пытаюсь получить доступ к веб-приложениям через ELB, запросы на содержимое stati c обрабатываются нормально, но запросы к приложению REST завершаются неудачно с 403. Я вижу ошибку 403 в журналах доступа Tomcat, поэтому я знаю, что они принимаются Tomcat. Однако в журналах приложения REST нет никаких доказательств того, что запрос был получен. Я добавил фильтр в приложение REST, в котором регистрируются все полученные запросы, но он не показывает доказательств того, что запрос был получен при отправке через ELB.

Есть идеи, почему это может происходить? Есть предложения по диагностике?

Мой docker файл ...

FROM tomcat:8.0

LABEL maintainer="rossmillsiphone@gmail.com"

ADD voteride-web.war /usr/local/tomcat/webapps/
ADD voteride-ws.war /usr/local/tomcat/webapps/
ADD mysql-connector-java-5.1.9.jar /usr/local/tomcat/lib/
ADD server.xml /usr/local/tomcat/conf/
ADD context.xml /usr/local/tomcat/conf/
ADD email.properties /usr/local/tomcat/lib/
ADD logging.properties /usr/local/tomcat/conf

EXPOSE 8080

CMD ["catalina.sh", "run"]

1 Ответ

0 голосов
/ 10 февраля 2020

В этой статье был ответ, в котором я нуждался: https://willwarren.com/2014/01/27/running-apache-tomcat-with-ssl-behind-amazon-elb/

Установка подобного коннектора позволила решить проблему и позволить вызывать веб-приложение, когда traffi c проходил через ELB.

    <Connector
            port="8080"
            protocol="HTTP/1.1"
            proxyPort="443"
            scheme="https"
            secure="true"
            proxyName="mywebsite.com"
            connectionTimeout="20000"
            URIEncoding="UTF-8"
            redirectPort="8443" />
...