Tomcat
AWS Beanstalk 將整個應用程序從 http 重定向到 https
aws 負載均衡器通過埠 80 將所有 https 請求轉發到 ec2 實例。我需要以某種方式將所有 http 請求重定向到 https。
到目前為止,我收集到的是您需要以某種方式使用重定向規則修改 ec2 實例,然後將該實例保存為新的 AMI,並將 beanstalk 指向新的 AMI。
我找到了以下重寫規則,但不幸的是我不知道如何處理它。
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !=https RewriteRule ^/(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
我 ssh 進入我的 ec2 實例,然後去了
/etc/httpd/
,這就是我所做的。我完全迷失了我應該從那裡做的事情。
- 我是修改文件還是創建新文件?
- 如果我需要修改或創建一個新文件,它會在哪裡,或者我會怎麼稱呼它,它會去哪裡?
- 有人可以提供文件的確切內容嗎
- 創建/修改此文件後,下一步該做什麼?我是否只是轉到 ec2 頁面,點擊我的實例旁邊的複選框,點擊操作,最後創建圖像?
如果是這樣,這一切意味著什麼?我不知道我應該在這裡有什麼設置。
最後,我假設我只是在 beanstalk 儀表板中進行配置,只需將 beanstalk env 指向我的新 AMI 並重新啟動伺服器。這聽起來正確嗎?
如果有人知道如何執行此操作或詳細描述該過程的網站,我會很高興。
我想指出,我在 tomcat 上使用了一個 java 應用程序。我也不確定自定義 AMI 是否會影響伺服器規模的擴大。
所以你需要做一些事情
- 在您的負載均衡器中,為埠 80 和埠 443 定義兩個偵聽器
- 在 ec2 實例中,在
/etc/httpd/conf.d/elasticbeanstalk.conf
- 將您的重寫規則添加到虛擬主機部分- 完成後,當這個工作正常時,您可能需要創建一個 ami 映像,以便這些設置保留在一個 ami 映像中,您以後可以使用它來創建其他實例
雖然這不是您所要求的,但我們通過CloudFront執行此操作。它比您建議的要容易得多,並且您可以獲得 CloudFront CDN 的所有額外好處,以幫助減輕 beanstalk ec2 實例的負載。
首先設置一個分佈,其源指向您的 beanstalk 負載均衡器(您也可以創建一個自定義源指向您的彈性 beanstalk 域名)。 然後使用“查看器協議策略”創建一個行為以“將 HTTP 重定向到 HTTPS”。
唯一的問題是您可能需要重新上傳您的 ssl 證書以添加“路徑”,以便它可以在 CloudFront 中使用。
aws iam upload-server-certificate --server-certificate-name certificate_object_name --certificate-body file://public_key_certificate_file --private-key file://privatekey.pem --certificate-chain file://certificate_chain_file --path cloudfront_path