![在 Elastic Beanstalk 负载均衡器上将 HTTP 转发到 HTTPS](https://linux22.com/image/724511/%E5%9C%A8%20Elastic%20Beanstalk%20%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%99%A8%E4%B8%8A%E5%B0%86%20HTTP%20%E8%BD%AC%E5%8F%91%E5%88%B0%20HTTPS.png)
我正在使用 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。问题是,你似乎不需要建议,而是需要有人为你编写解决方案。
请提供所有必要的信息以便我们为您提供帮助,并愿意学习和实施我们的建议。否则,您将无法找到有关服务器故障的太多帮助。