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

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

我正在嘗試快取 EC2 上的一個網站,它有一個 URL uncached.xyz.com,因此我創建了一個指向原點的 Cloud Front uncached.xyz.com,並創建了一條指向 cloudfront 發行版的記錄xyz.com,名稱類似d111111abcdef8.cloudfront.net

但是伺服器傳回的所有資訊(例如按鈕 url)都不是相對的,並且包含請求 URL,這意味著如果 Cloudfront 使用 存取來源uncached.xyz.com,則 CDN(對於使用的任何 cname)傳回的內容將包含 Origin 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?

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

架構範例

答案1

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

在 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

相關內容