簡體   English   中英

Cloudfront 和 EC2

[英]Cloudfront and EC2

您如何在 EC2 實例前設置 Cloudfront? 我有興趣讓用戶點擊 Cloudfront url 而不是 EC2 來源。

因此,用戶不會點擊 ec2-52-64-xxx-xxx.ap-southeast-2.compute.amazonaws.com,而是點擊 d111111abcdef8.cloudfront.net。

我的目的是通過減少 EC2 實例上的流量和 CPU 負載來節省托管費用,同時為海外用戶提供更快的加載時間。

我會將我的 DNS 指向 Cloudfront url 而不是 EC2 源嗎?

我會將我的 DNS 指向 Cloudfront url 而不是 EC2 源嗎?

差不多。

從技術上講,您不會將 DNS 指向 URL,而是將其指向主機名或 IP 地址,這與 CloudFront 的做法略有不同。

首先,雖然...在 CloudFront 分配設置中,您需要在“備用域名”框中配置 CloudFront 應該期望看到由瀏覽器發送的任何主機名。

對於原點,輸入ec2-...-compute.amazonaws.com主機名。

此時,10-15 分鍾后,訪問 CloudFront 分配的 URL 應該會將您帶到您的服務器。

接下來...如果您的 DNS 托管在 Route 53 中,那么您將轉到托管區域並為這些主機名創建新的“A”記錄,將“別名”設置為“是”,這將導致目標框填充 CloudFront 分配,然后您將選擇該分配並保存記錄。

如果您的 DNS 不是由 Route 53 托管,您將改為在 DNS 中創建CNAME記錄,指向分配給 CloudFront 分配的主機名,例如jozxyqkexample.cloudfront.net 這里的問題是你不能用你的域的頂點/根來做這個,因為CNAME在那里無效......所以 www.example.com 可以工作,但 example.com 不會。 這是 DNS 的限制,唯一的解決方法是將 Route 53 用於您的 DNS,因為它與 CloudFront 進行了內部集成(因此上面提到的“別名”記錄使用內部查找而不是外部引用,如 CNAME )。

您可能還想將 CloudFront 配置為將Host標頭轉發回源服務器; 否則,當請求到達時,在 HTTP 請求中呈現給您的服務器的主機名將不是您的域名,而是您配置為原始主機的主機名。

請確保,當您通過 CloudFront 連接時,服務器不會將您重定向回 EC2 主機名或 IP(瀏覽器中的地址欄會更改,如果發生更改,並且您需要修復 Web 服務器的配置,如果那個會發生)。

使用以下步驟將 ec2-52-64-xxx-xxx.ap-southeast-2.compute.amazonaws.com 路由到 d111111abcdef8.cloudfront.net。

請按照以下步驟操作:

  1. 登錄您的 aws 控制台並搜索 CloudFront

  2. 轉到 CloudFront:創建分配(請選擇Web 分配

  3. 源設置下:選擇源域名(您可以分配實例的公共 DNS,例如ec2-52-64-xxx-xxx.ap-southeast-2.compute.amazonaws.com
  4. 默認緩存行為設置下:選擇查看器協議策略:將 HTTP 重定向到 HTTPS
  5. 在對象緩存下:選擇自定義(在最小 TTL 、最大 TTL 和默認 TTL 中保持默認設置)
  6. 轉發 Cookie : 全部
  7. 查詢字符串轉發和緩存:全部
  8. 分發設置:選擇價格等級:(使用所有邊緣位置(最佳性能))。
  9. 備用域名 (CNAME) :如果有,請添加您的域名 URL 名稱
  10. SSL 證書:在 SSL 下,您可以選擇默認證書或您的自定義證書,具體取決於您的要求。(選擇默認值。)

注意:對於自定義 SSL 證書(證書應該在 us-east-1 區域)。

  1. 可能需要 10 到 15 分鍾

Origin 中的 IP 會給出錯誤:com.amazonaws.services.cloudfront.model.InvalidArgumentException:參數來源名稱不能是 IP 地址。 (服務:AmazonCloudFront;狀態代碼:400;錯誤代碼:InvalidArgument;

即使 AWS 文檔說您可以使用 IP。

作為源的公共 DNS (IPv4) 給出“504 錯誤無法滿足請求”
當 Origin 是 S3 並且 S3 的權限有限時,我就遇到過這種情況。 但是 EC2 沒有權限控制。 它是公開的。

除了上述內容之外,您還可以指定Namecheap使用Route53 DNS,以便您可以從那里進行管理。 這將為您節省最多頭痛! 希望這可以幫助! <3

把這個答案留給那些也面臨錯誤的人

502 ERROR 無法滿足請求。 CloudFront 無法連接到源。 我們目前無法連接到此應用程序或網站的服務器。 可能有太多流量或配置錯誤。 稍后重試,或聯系應用或網站所有者。 如果您通過 CloudFront 向客戶提供內容,您可以通過查看 CloudFront 文檔找到故障排除和幫助防止此錯誤的步驟。

如果您 100% 確定您的源已打開 443 端口並且源上的證書有效,您可以測試您的 Cloudfront 分配,而無需創建 Route 53 記錄。

假設您擁有在 EC2 上運行的“mywebiste.com”,並且您的 Cloudfront DistributionID 是 a1b2c3d4e5。

嘗試這個:

curl https://a1b2c3d4e5.cloudfront.net -H 'host: mywebiste.com' -I

這就是host頭的全部內容。 它必須與您的源 SSL 證書中的一個相匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM