Tomcat Web 应用程序未接收通过 AWS ELB 发送的请求



我有 2 个 Web 应用程序在 AWS EC2 实例上的 docker 容器中的单个 Tomcat 上运行。 一个 Web 应用程序是 100% 角度静态内容,另一个是 REST 应用程序。 当我在笔记本电脑上运行网络应用程序时,一切正常。 当我在 EC2 实例上运行 docker 容器并使用公有 IP 直接访问 Web 应用程序时,一切运行正常。 但是,当我尝试通过 ELB 访问 Web 应用程序时,对静态内容的请求得到了很好的处理,但对 REST 应用程序的请求失败并显示 403。 我可以在 Tomcat 访问日志中看到 403 错误,因此我知道 Tomcat 正在接收它们。 但是,REST 应用日志未显示已收到请求的证据。 我在 REST 应用程序中添加了一个过滤器,用于记录收到的所有请求,但它没有显示通过 ELB 发送时收到请求的证据。

知道为什么会发生这种情况吗? 有什么诊断建议吗?

我的码头工人文件...

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"]

这篇文章有我需要的答案:https://willwarren.com/2014/01/27/running-apache-tomcat-with-ssl-behind-amazon-elb/

像这样设置连接器解决了问题,并允许在流量通过 ELB 时调用 Web 应用。

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

最新更新