AWS Application Load Balancer 443后面的tomcat 8080

时间:2018-11-26 04:19:40

标签: tomcat amazon-ec2 https proxy aws-application-load-balancer

我的目标是443(ALB)-> 8080(TOMCAT)

我正在8080上运行EC2 Tomcat实例。

这是8080上的tomcat apr连接器

<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
           port="8080" scheme="http"
/>

我有一个侦听443并带有证书的ALB,并设置为传递给目标组8080。

因此,想法是https://www.website.com/myapp-> www.mywebsite.com:8080/myapp

我知道我的应用程序运行良好,因为如果我公开访问8080,则可以完全运行该应用程序。

我配置错误,因为当我访问该网站时 https://www.website.com/myapp

我似乎被重定向到: www.website.com/myapp

似乎我可以达到tomcat的要求,但是当它响应时,它会将我重定向回http。我在做什么错了?

谢谢!

3 个答案:

答案 0 :(得分:1)

Spring Boot应用程序使用tomcat服务器在8080上运行。 其他应用程序/服务器(如apache2)在80端口上运行。 理想情况下,ALB应该指向80端口,并且您应该在80处设置代理,以将您的请求委托给tomcat(port:8080)

这是请求的流向:

  1. 在443处接受来自浏览器的请求
  2. AWS ALB捕获到具有隐蔽(443至80)的侦听器/目标组的请求
  3. 现在,像apache2这样的代理服务器应该将在80到8080之间收到的请求转发给

因此,您缺少第3步,这很简单。您可以阅读https://stackoverflow.com/a/33704078/1074100进行配置。

更不用说,您的域应指向ALB。这可以在Route53中完成。这有助于ALB接收浏览器发出的请求。基本上是第一步工作。

答案 1 :(得分:0)

您可以在负载均衡器中使用“重定向”规则将请求从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。

enter image description here

我希望这会有所帮助!

答案 2 :(得分:0)

对我有用的是: 我添加了2个听众:

  1. 要重定向,请使用HTTP(80)-> HTTPS(443)

  2. 然后是第二个侦听器,即转发规则HTTPS(443)-> ALB的“我的目标”