Amazon-Web-Services

AWS Cloud Front,如何使用正確的 url 請求源

  • January 23, 2021

我正在嘗試記憶體一個位於 EC2 上的網站,它有一個 URL uncached.xyz.com,所以我創建了一個指向原點的 Cloud Front,uncached.xyz.com並創建了一個xyz.com指向 Cloudfront 分佈的記錄,命名為d111111abcdef8.cloudfront.net

但是伺服器返回的所有資訊(如按鈕 url)都不是相對的,並且包括請求 URL,這意味著如果 Cloudfront 使用 訪問源uncached.xyz.com,則 CDN 返回的內容(對於使用的任何 cname)將包含源 url 而不是用於訪問 CloudFront 分配的 url,看起來 <a href="uncached.xyz.com/info"><a>應該是<a href="xyz.com/info"><a>.

tl:博士

CloudFront 應該返回:(

<a href="xyz.com/info"><a> 這是訪問的指向 CDN 分發(記憶體的網站)的 url)

但它返回:(

<a href="uncached.xyz.com/info"><a> 這是包含要記憶體的數據的原始 URL(網站))

有沒有辦法“欺騙”原始伺服器以認為用於訪問它的 url 是 CloudFront 分配而不是配置的原始 URL?

我正在使用的更簡單的版本。

建築範例

有幾種方法可以做到這一點:

在 Cloudfront 配置中為源請求設置標頭 X-Forwarded-Host 和 X-Forwarded-Proto,以將所需資訊傳遞給後端應用程序。在後端使用標題(如果存在)來生成頁面內的內容。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto

另一種方法可能是設置一個 lambda@edge 來處理原始響應,並在需要的地方替換內容。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-updating-http-responses.html

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