Tomcat Web 应用未接收到通过 AWS ELB 发送的请求
Tomcat web app not receiving requests sent through AWS ELB
我有 2 个 Web 应用程序 运行 在 AWS EC2 实例的 docker 容器中的单个 Tomcat 上。一个网络应用程序是 100% angular 静态内容,另一个是 REST 应用程序。当我 运行 我的笔记本电脑上的网络应用程序时,一切 运行 都很好。当我 运行 EC2 实例上的 docker 容器并使用 public IP 直接访问 Web 应用程序时,一切 运行 都很好。但是,当我尝试通过 ELB 访问 Web 应用程序时,对静态内容的请求处理得很好,但是对 REST 应用程序的请求失败并返回 403。我可以在 Tomcat 访问日志中看到 403 错误,所以我知道 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"]
这篇文章有我需要的答案: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" />
我有 2 个 Web 应用程序 运行 在 AWS EC2 实例的 docker 容器中的单个 Tomcat 上。一个网络应用程序是 100% angular 静态内容,另一个是 REST 应用程序。当我 运行 我的笔记本电脑上的网络应用程序时,一切 运行 都很好。当我 运行 EC2 实例上的 docker 容器并使用 public IP 直接访问 Web 应用程序时,一切 运行 都很好。但是,当我尝试通过 ELB 访问 Web 应用程序时,对静态内容的请求处理得很好,但是对 REST 应用程序的请求失败并返回 403。我可以在 Tomcat 访问日志中看到 403 错误,所以我知道 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"]
这篇文章有我需要的答案: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" />