Load-Balancing

在 Elastic Beanstalk 負載均衡器上將 HTTP 轉發到 HTTPS

  • July 15, 2018

我正在使用 Elastic Beanstalk,並將我的 SSL 證書安裝在屬於 EB 的 EC2 實例的負載均衡器中。每次伺服器不健康時,負載均衡器都會刪除實例並創建一個新實例,這意味著我將失去在實例級別內設置的重定向程式碼和 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]

我也回答了你的最後一個問題。首先,您需要使用 ebextension 來為您的 Beanstalk 環境編寫任何類型的自定義。Ebextensions 正是為此目的而建構的。

其次,我們不知道您使用的是什麼解決方案堆棧,因此我們無法提供 ebextensions 片段供您將 http 路由到 https。每個解決方案堆棧都是不同的,有的使用 nginx,有的使用 apache,有的使用 none。如果沒有對您的環境的描述性解釋,沒有人可以幫助您。

第三,我之前給出的關於編寫 ebextensions 的答案對於非 AWS 使用者來說可能很複雜,但它應該在你能夠完成的範圍內。如果沒有,我建議編寫一個 bash 腳本來執行您想要的操作,然後在此處發布,我可以幫助您編寫可以執行該腳本的 ebextensions。問題是,您似乎不需要建議,而是需要有人為您編寫解決方案。

請提供所有必要的資訊以便我們為您提供幫助,並願意學習和實施我們的建議。否則,您將無法在伺服器故障方面找到太多幫助。

引用自:https://serverfault.com/questions/920884