AWS Application Load Balancer 443 后面的 tomcat 8080

标签 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"
/>

我有一个 ALB 使用证书监听 443 并设置为传递给目标组 8080。

所以想法是https://www.website.com/myapp -> www.mywebsite.com:8080/myapp

我知道我的应用程序运行良好,因为如果我打开对 8080 的公共(public)访问,我就可以完全运行该应用程序。

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

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

似乎我可以很好地连接到 tomcat,但是当它响应时它会将我重定向回 http。我做错了什么?

谢谢!

最佳答案

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

这是请求的流程:

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

因此您错过了相当简单的第 3 步。你可以阅读https://stackoverflow.com/a/33704078/1074100进行配置。

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

关于AWS Application Load Balancer 443 后面的 tomcat 8080,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53474735/

相关文章:

c - 带 Linux 套接字的 HTTPS?

java - 在我的服务器中,出现异常 "javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake"

tomcat - Tomcat Http11NioProtocol的缺点

java - 从 Jenkins 或网站重启 Tomcat

multithreading - Tomcat JSP 似乎是串行运行(而不是并行运行)——我错过了什么?

python - 有没有办法在 ec2 实例中获取实例 ID

amazon-web-services - 如何找到可供我的 IAM 用户使用的镜像 ID、实例类型和子网 ID?

java - Eclipse 无法识别代码更改

amazon-web-services - SSH 进入通过 KOPS 创建的 kubernetes 节点

node.js - 使用 node.js/express 自动 HTTPS 连接/重定向