我們有一個指向CloudFront分配的通配符(*)子域。起源是API網關。將CloudFront主機頭轉發到API網關
我們需要知道API網關中的原始Host
標頭,以便我們可以路由這些請求。
只需白名單中的CloudFront的頭Host
訪問通過HTTP CloudFront的分佈時返回錯誤 - 大概是因爲API網關需要Host
頭知道調用哪個API。
如果是這種情況,是否可以通過X-Forwarded-Host
將Host
標題從CloudFront轉發到API網關?或者...是否有另一種方法將通配符子域與API網關一起使用?
如果您將主機標頭列入白名單,則應將主機標頭作爲「主機」(即不是「X-Forwarded-Host」)傳遞到原始標頭。你能發佈你收到的實際錯誤嗎?它只是一個沒有內容的500人,或者是否有身體或錯誤信息?也可能需要查看API網關的Cloudwatch日誌以獲取更詳細的錯誤消息。 –
@ChrisSimon將原始請求的主機標頭作爲「Host:」傳遞,將導致請求永遠不會到達API網關,該API網關需要在Host中指定一個值,因此在那裏不會生成日誌。這裏的問題是如何通過將一個目標的多個請求主機值(通配符)彙集到一個目標,而不會丟失原始主機名的跟蹤,通過將其作爲備用*標頭髮送,如由CloudFront自動創建的「X-Forwarded-Host」 。 –
@ Michael-sqlbot正是我想要的(你知道是否有可能?!)。另外,我可以確認我從CloudFront獲得了一個403(ERROR。請求無法滿足。錯誤的請求。)以及該API網關永遠不會被擊中(並且不會在CloudWatch中生成任何日誌...但是,如果您直接點擊API,而不是通過CloudFront進行操作)。 –