AWS Cloud Front,如何使用正確的 url 請求源
我正在嘗試記憶體一個位於 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 來處理原始響應,並在需要的地方替換內容。