【问题标题】:tomcat 8080 behind AWS Application Load Balancer 443AWS Application Load Balancer 443 后面的 tomcat 8080
【发布时间】:2018-11-26 04:19:39
【问题描述】:

我的目标是 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 的公共访问权限,我可以完全运行该应用程序。

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    这是请求的流程:

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

    所以你错过了相当容易的第三步。可以阅读https://stackoverflow.com/a/33704078/1074100进行配置。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        我希望这会有所帮助!

        【讨论】:

        • 谢谢,但这不是问题。我相信问题出在 tomcat 方面。
        猜你喜欢
        • 1970-01-01
        • 2021-01-21
        • 2017-07-30
        • 1970-01-01
        • 1970-01-01
        • 2017-11-23
        • 2019-05-23
        • 2018-03-08
        • 1970-01-01
        相关资源
        最近更新 更多