AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何在我的 ELB Classic Load Balancer 上將 HTTP 流量重新導向到 HTTPS?
我在 Elastic Load Balancing (ELB) Classic Load Balancer 上使用 HTTP 和 HTTPS 接聽程式。我的 Classic Load Balancer 卸載了 SSL,並且後端連線在單一 HTTP 連接埠 (連接埠 80) 上接聽。當我嘗試將流量從 HTTP 重新導向到 HTTPS (連接埠 443) 時,收到錯誤 "ERR_TOO_MANY_REDIRECTS"。
簡短描述
Classic Load Balancer 不支援將 HTTP 流量重新導向到 HTTPS 作為原生功能。為了實現此功能,您必須在 Classic Load Balancer 後方的 Web 伺服器執行個體上設定重寫規則。
設定網路應用伺服器上的重寫規則,以使用 X-Forwarded-Proto 標頭並重新導向 HTTP 請求。否則,重寫規則可能會在您的 Classic Load Balancer 和負載平衡器後方的執行個體之間產生無限重新導向請求循環。這樣的循環會導致錯誤 "ERR_TOO_MANY_REDIRECTS"。
**注意:**Application Load Balancer 支援重新導向動作,可用於將 HTTP 流量重新導向到 HTTPS。若要使用此功能,請將 Classic Load Balancer 移轉到 Application Load Balancer 。
解決方案
查看 Apache、NGINX 和 IIS Web 伺服器的下列範例組態。設定 Classic Load Balancer 後方的網路伺服器,以使用 X-Forwarded-Proto 標頭,根據用戶端使用 HTTP 還是 HTTPS 來引導流量。請務必在您的 Web 伺服器中新增重寫規則:
- 使用 HTTP 將用戶端重新導向到 HTTPS 網址
- 使用 HTTPS 直接為用戶端提供服務
**注意:**根據您的組態和使用案例修改以下範例組態。
Apache 伺服器: 虛擬主機檔案方法
最佳做法是使用以下方法來設定您的 Web 伺服器:
-
開啟您的 Apache 組態檔案。可能的位置包括 /etc/httpd/conf/httpd.conf (Apache 2/httpd)、/etc/apache2/sites-enabled/ (Apache 2.4) 或 /etc/apache2/apache2.conf (Ubuntu 上的 Ubachetu)。
-
在組態檔案的 VirtualHost 區段新增類似以下內容的重寫規則:
<VirtualHost *:80>RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] </VirtualHost> -
儲存您的 Apache 組態檔案。
-
重新啟動 Apache。
Apache 伺服器:.htaccess 檔案方法
如果您無法存取主 Apache 組態檔案,請使用 .htaccess 檔案。如需詳細資訊,請參閱 Apache 網站「Apache HTTP 伺服器教學課程:.htaccess 檔案」頁面上的何時 (不) 使用 .htaccess 檔案一節。
若要設定您的 Web 伺服器,請完成下列步驟:
-
開啟您的 Apache 組態檔案。可能的位置包括 /etc/httpd/conf/httpd.conf (Apache 2/httpd) 或 /etc/apache2/sites-enabled/ (Apache 2.4)。
-
編輯 Directory 命令以啟用 .htaccess:
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> -
儲存您的 Apache 組態檔案。
-
開啟您的 .htaccess 檔案。
-
新增類似下列的重寫規則:
RewriteEngine OnRewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] -
儲存您的 .htaccess 檔案。
-
重新啟動 Apache。
NGINX 伺服器
**注意:**此解決方案適用於 NGINX 1.10.3 (Ubuntu) 和 NGINX 1.12.1 (Amazon Linux)。
請完成下列步驟:
-
開啟您的 NGINX 組態檔案 (nginx.conf)。
-
新增以下重寫規則。請務必修改您組態的重寫規則:
server { listen 80; server_name _; if ($http_x_forwarded_proto = 'http'){ return 301 https://$host$request_uri; } } -
重新啟動 NGINX。
IIS 伺服器
**注意:**此解決方案適用於 Microsoft Windows Server 2012 R2 和 2016 Base。
請完成下列步驟:
-
安裝 IIS URL 重寫模組。如需詳細資訊,請參閱 Microsoft 網站上的網址重寫。
-
開啟您的 web.config 檔案。
-
將以下重寫規則新增至 <system.webServer> 區段。根據您的具體處組態修改重寫規則:
<rewrite> <rules> <rule name="Rewrite HTTP to HTTPS" stopProcessing="true"> <match url="^(.*)$"/> <conditions logicalGrouping="MatchAny"> <add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$"/> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> </rule> </rules> </rewrite> -
儲存您的 web.config 檔案。
-
開啟 IIS Manager。
-
重新整理預設網站。
-
檢查新的重寫規則是否出現在網址重寫區段。
-
重新啟動您的網站。
-
確認重新導向是否有效。
相關資訊
當我連線到設定為使用 Classic Load Balancing 的 EC2 執行個體上執行的 Web 伺服器時,為什麼會收到 HTTP 5xx 錯誤?
- 語言
- 中文 (繁體)
