Amazon-Web-Services

無法讓 aws cloudfront / route53 解析我的域名

  • June 17, 2018

我已經使用 SSL 設置了一個雲端分發,指向一個公共的 s3 儲存桶並設置為靜態網站。我選擇了將 HTTP 重定向到 HTTPS 的選項,因為我想強制使用 HTTPS。

我將 route53 設置為具有別名類型的 A 和 AAAA 記錄,使用example.com並將其解析為雲端域名。當我這樣做時,“託管區域 ID”自動出現,表明亞馬遜辨識雲端域。

我可以在瀏覽器中訪問云端端點並查看我的網站,但是,如果我直接訪問example.com(沒有 HTTPS,沒有 www),那麼我會看到:

403 錯誤 無法滿足請求。錯誤的請求。由雲端(CloudFront)生成請求ID:xDCmX7k8EFGGLAfjgpJcJ7AD-_mRfdBseTsqEP2aXfSWQ5S2mTMwuA==

但是,如果我嘗試https://example.com,那麼我只會得到一個空白頁。

我嘗試將兩者都example.com放在www.example.comcloudfront cnames 欄位中,但這似乎沒有任何作用,所以我目前已將它們刪除。

您需要同時擁有example.comwww.example.com在 CloudFront CNAME 設置中。但是,添加這些之後,您在測試之前等待了多長時間?進行更改後,CloudFront 需要重新部署到所有邊緣站點,這有時可能需要一段時間。

您可以在分發列表中查看狀態 - 任何顯示“正在部署”的內容,您都需要等待 - 通常大約需要 15 分鐘,但我發現有時需要長達一個小時。

部署更改後,您還需要清除瀏覽器記憶體(可能在隱身視窗中嘗試)以確保您從伺服器請求最新的。301 重定向(這是 CloudFront 用來從 HTTP 重定向到 HTTPS 的方法)被認為是“永久的”,您的瀏覽器可能已經記憶體了它,並且不會再次向 CloudFront 請求它。

確定測試時間的最簡單方法通常是使用curl

curl --head --location http://example.com
curl --head --location http://www.example.com
curl --head --location https://example.com
curl --head --location https://www.example.com

對於其中的每一個,您應該得到響應,例如從 http 到 https 地址的 301 重定向,然後在 https 地址處獲得 200 OK。

理想情況下..您可能實際上希望為 www(或裸域,如果 www 是您的主要域)設置另一個 CloudFront 分配,指向一個帶有簡單重定向的儲存桶,以確保每個人最終都到達該地址你比較喜歡。

但要記住的主要事情是……等等,在對您的發行版進行任何更改之後。有超過 100 個邊緣站點需要部署。

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