您可能想要以不同的方式處理www子域和裸頂點。
1)http://example.com - >https://www.example.com
處理裸(頂點)域重定向是進入Route53和和設置頂點到使用A別名記錄到S3桶目標的最簡單的途徑。在S3存儲桶中,您可以啓用「將所有請求重定向到另一個域」並重定向到https://www.example.com。
該解決方案僅適用於http請求,但不適用於https,因爲S3不會終止https請求的SSL。請參閱#3瞭解適用於http和https的解決方案。
2)http://www.example.com - >https://www.example.com
你可以做同樣的域名WWW HTTP => HTTPS重定向使用X-Forwarded-Proto
HTTP標頭在你的應用程序。它的值將爲http
或https
。如果您收到http
,您可以重定向至https
。
Apache的例子是這樣的:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
Nginx上例子看起來是這樣的:
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$1 permanent;
}
或者,你可以前的彈性魔豆的應用與的Cloudfront和實現HTTP = >在那裏https重定向。在「行爲設置」中,您可以檢查單選按鈕「將HTTP重定向到HTTPS」。
3)https://example.com - >https://www.example.com
你將需要具有使用者替代名稱覆蓋example.com和www.example.com的SSL證書。你可以免費得到這個AWS Certificate Manager。您可以「添加更多名稱」,這將允許您在單個證書中覆蓋* .example.com和example.com。證書管理器與Cloudfront完全集成,因此這是一個不錯的選擇。
的Cloudfront選項:
的Cloudfront是一個相當不錯的選擇,在這裏 - 特別是如果你用它前面的整個應用程序(頂點和WWW)。
在「替代域名(CNAME)」中的Cloudfront內,您需要添加example.com和www.example.com(用逗號或換行符分隔)。您還將指定涵蓋兩個域的數字證書。
彈性魔豆選項:
如果你不想使用的Cloudfront,你可以在彈性負載均衡終止SSL,而不是兩個頂點和www和執行同樣的WWW重定向使用你的應用程序層HTTP服務(apache,nginx等)。只需添加涵蓋兩個域(apex和www子域)的SSL證書即可。
實現非www重定向:
無論使用哪種終端選項,你會得到https://example.com追溯到上彈性魔豆你的原始服務器,但是你需要返回301,其引導的請求瀏覽器到https://www.example.com在應用程序層。
Apache的例子:
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Nginx上例如:
server {
server_name "~^(?!www\.).*" ;
return 301 $scheme://www.$host$request_uri;
}
Route53別名記錄用於根尖:
無論哪種解決方案,您將需要一個Route53一個別名記錄在頂點使這項工作作爲CNAME記錄不支持apex(裸體)域。您需要指定Elastic Beanstalk目標或Cloudfront目標。
您使用的是什麼DNS服務? Route53? –
我看過,Elastic Beanstalk上的NodeJS應用程序在nginx代理後面運行。這將是一個更清潔(並稍微快一點)來實現所有http => https和!www => www重定向與nginx而不是節點。您可以使用.ebextensions完成此操作:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#nodejs-platform-proxy –