Domain-Name-System

Route 53 中的 CNAME - 將 www 重定向到非 www 不起作用

  • May 6, 2015

我在 AWS 上託管 Web 應用程序Nginx 1.6.3django 1.7.6

我想通過 Route 53重定向www.mydomain.commydomain.com

換句話說,mydomain.com/foo當使用者輸入時顯示在地址欄上www.mydomain.com/foo


Route 53 配置

mydomain.com

  • 類型:一條記錄
  • 值:別名 {彈性負載均衡器 A 記錄}

www.mydomain.com

  • 類型:CNAME
  • 價值:mydomain.com

使用上述配置,mydomain.com執行良好但www.mydomain.com返回400 Bad request錯誤。當然,我已經在具有足夠時間間隔(超過 24 小時)的秘密模式(無記憶體)下進行了嘗試。http://在前面添加會返回相同的錯誤。


   server {
       listen 80;
       server_name www.mydomain.com;
       return 301 $scheme://mydomain.com$request_uri;
   }

如果我在 處添加上面的程式碼nginx.conf,則按預期www.mydomain.com重定向到。**但是,我不確定是否需要編輯 Web 伺服器配置才能使用 CNAME 服務。**如何在不編輯 Web 伺服器的情況下使用 CNAME 服務?mydomain.com

這聽起來像是預期的行為。當 HTTP 伺服器收到一個它不知道如何處理的請求時,究竟會發生什麼可能會有所不同,但除非它發生在 HTTP 級別,否則不會發生重定向。

記錄只是說明 DNS 中的CNAME給定名稱是 DNS 中不同名稱的別名。

當您有CNAME記錄時會發生什麼,當您的 HTTP 客戶端對別名進行A或查詢時,他們將獲得與返回的實際名稱相關聯的 IP 地址。AAAA

然後他們將連接到該地址,知道這是與他們查找的名稱(別名)相關聯的地址,並發出完全正常的請求。

當您擁有基於名稱的虛擬主機時,HTTP 伺服器關心的是Host標頭的內容,客戶端會將其導航到的 URL 中的任何主機名作為該標頭的值(在本範例中為別名)。

如果你想重定向一個 HTTP 客戶端,你需要一個 HTTP 重定向,就像你自己的例子一樣。

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