在 Elastic Beanstalk 负载均衡器上将 HTTP 转发到 HTTPS

在 Elastic Beanstalk 负载均衡器上将 HTTP 转发到 HTTPS

我正在使用 Elastic Beanstalk,并在属于 EB 的 EC2 实例的负载均衡器中安装了 SSL 证书。每次服务器运行不正常时,负载均衡器都会删除该实例并创建一个新实例,这意味着我将丢失在实例级别内设置的重定向代码和 SSL 证书。

因此,我必须通过 AWS ACM 在负载均衡器上安装 SSL 证书。但是,如何在负载均衡器上将 HTTP 重定向到 HTTPS?如果我仍将重定向代码保留在服务器中,则当实例运行状况不佳时,负载均衡器将删除重定向代码。

在实例内部设置重定向是这里唯一可行的方法吗?

更新

我找到了一些解决方案.ebextensions。我目前正在使用 Apache 服务器。我发现了以下内容:

httpd_redirect.conf我创建了一个包含.ebextensions以下内容的文件。

files:
  "/etc/httpd/conf.d/httpd_redirect.conf" :
    mode: "000644"
    owner: root
    group: root
    content: |
      RewriteEngine On
      RewriteCond %{HTTP_HOST} !^www\. [NC]
      RewriteRule ^(.*) https://www.%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

答案1

我也回答了你的最后一个问题。首先,你需要使用 ebextension 来为你的 Beanstalk 环境编写任何类型的自定义。Ebextensions 正是为此目的而构建的。

其次,我们不知道您使用的是哪种解决方案堆栈,因此我们无法提供 ebextensions 的片段供您将 http 路由到 https。每个解决方案堆栈都不同,有些使用 nginx,有些使用 apache,有些则不使用。如果您的环境没有描述性说明,那么没有人能够帮助您。

第三,我之前给出的编写 ebextensions 的答案对于非 AWS 用户来说可能很复杂,但它应该在你能够完成的范围内。如果不是,我建议编写一个可以执行你想要的操作的 bash 脚本,然后在这里发帖,我可以帮助你编写可以执行该脚本的 ebextensions。问题是,你似乎不需要建议,而是需要有人为你编写解决方案。

请提供所有必要的信息以便我们为您提供帮助,并愿意学习和实施我们的建议。否则,您将无法找到有关服务器故障的太多帮助。

相关内容