【问题标题】:AWS Aplication Load Balancer HTTP to HTTPS with EC2 instanceAWS Application Load Balancer HTTP 到 HTTPS 与 EC2 实例
【发布时间】:2019-04-19 00:32:19
【问题描述】:

我有一个 EC2 实例在 Ubuntu 上运行 Node.Js 服务器。

我的目标是:

  1. 将我的托管区域连接到 EC2 实例
  2. 将所有传入流量从端口 80 路由到端口 3000(因为我的服务器在端口 3000 上运行)
  3. 最重要的是使用 Application Load Balancer 将所有请求转发到 HTTPS(我已经在证书管理器中创建了 SSL 证书)。

目前,我只能在端口 3000 (http://prntscr.com/livali) 上使用 EC2 实例的 Public Ip 打开网站。 Https 请求或 Http 到端口 80 不起作用 (http://prntscr.com/livau2)。使用实例的Public Ip 在我的托管区域上创建了A 记录,无法通过托管区域 (http://prntscr.com/liv9no) 打开实例。

我真的很困惑,因为我无法启动并运行它。我真的很感激关于如何设置整个事情的分步指南。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 https amazon-route53 amazon-elb


    【解决方案1】:

    如果您已经拥有 SSL 证书,则仅使用端口 443 而不是端口 80 是安全的。

    1. 创建一个面向 Internet 的应用程序负载均衡器,它侦听端口 443 并将流量路由到端口 3000 上的 EC2 实例。

    2. 通过 HTTP 访问您的域时将用户重定向到 HTTPS

      Docs > Load Balancer Listeners > Redirect Actions

    3. 添加 A 记录以将您的域名指向负载均衡器的公共 DNS。

    【讨论】:

    • 如何将 Application Load Balancer 与我的 EC2 实例关联?
    • 您可以将其添加为目标组。检查 AWS 文档。非常简单。
    【解决方案2】:

    这些是 Web 服务器问题,而不是 DNS 问题。您需要设置 NGINX 或 Apache 之类的东西来代理端口 80 到端口 3000。有关信息,请参阅 Apache redirect to another port

    您还可以在 Apache 中使用重写规则强制 HTTPS:https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

    强制使用 HTTPS 的另一个选项是创建 CloudFront 分配并使用它。 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 2017-09-28
      • 2014-02-24
      • 1970-01-01
      • 2020-08-31
      • 2019-02-04
      • 2021-01-21
      相关资源
      最近更新 更多