Cname-Record

有什麼方法可以讓 CloudFront 接受單部分(頂級)CNAME?

  • August 8, 2018

我們在我工作的地方有“轉到連結”,例如http://go.mycompany.com/foo重定向到任意位置。它由 Google App Engine 上的一個簡單的 Python 應用程序提供支持,該應用程序保留關鍵字 => url 的映射。

我正在努力讓他們“不合格”地工作,所以 go/foo 會把你帶到同一個地方。我們的 DHCP 伺服器為我們提供了包括“mycompany.com”在內的搜尋域,因此“go”確實解析為 IP,它應該都能正常工作。

除了我們主要用於將 HTTP 升級到 HTTPS 的 Cloudfront 上的 DNS 入口點。使用完整域時,Host:HTTP 標頭以 go.mycompany.com 的形式出現,一切正常。當僅使用“go”時,Host: 標頭會簡單地通過“go”。即使 TCP 級別的流量路由,Cloudfront 也不知道如何處理它。

修復應該像在給定 CloudFront 分配的 CNAMES 中添加“go”一樣簡單,如下所示:

備用域名 (CNAME)

go.mycompany.com
go

但是,UI 中的該框不接受裸詞域。有什麼技巧可以解決嗎?

對此沒有解決方法,正如邁克爾漢普頓正確指出的那樣,無論如何這都是一種不好的做法。

但是關於為什麼,具體來說,這對於 CloudFront 是不可能的,至少部分原因是 CloudFront 的備用域名值位於全域命名空間中。沒有兩個 CloudFront 分配在其備用域名設置中可以具有相同的值。如果我有一個 CloudFront 發行版example.com作為備用域名,那麼在我將其從我的分配中刪除之前,沒有其他人可以在他們的分配中配置相同的名稱。因此,如果允許,整個 CloudFront只有一個分發可以響應Host標頭設置為“go”或其他一些短值的請求,當然這樣的站點不能擁有來自公共 CA 的證書,因為沒有 CA 被授權頒發這樣的證書。

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