Apache-2.2

將多個域定向到一個域下的特定 URL:Amazon S3 或 Apache

  • July 18, 2017

我有一個包含使用者個人資料和以下地址結構的網站:

我需要允許使用者將他們自己的域指向/重定向到我網站上他們各自的頁面,例如:

一個外部域只能指向一個內部頁面。使用者將通過添加 CNAME/A 記錄手動設置其 DNS。使用者將只有一個域,沒有伺服器,因此他們不能通過 .htaccess 重定向。

所以我需要向使用者提供 CNAME 記錄/A 記錄,以便他們更新 DNS 並將他們的域重定向到我。

問題是:

  1. 如果我的網站在 Amazon S3 上執行,我能做到嗎?
  2. 如果是,如何以及對可以連結多少個域有任何限制?
  3. 這可以通過 S3 本身解決,還是我需要使用 Route 53?
  4. Linux/Apache 伺服器是更好的平台來實現這一點嗎?如果是,如何設置?

提前感謝您分享您的專家意見。

所以我需要向使用者提供 CNAME 記錄/A 記錄,以便他們更新 DNS 並將他們的域重定向到我。

小心:您似乎將 DNS 中的概念與 HTTP(網路瀏覽)協議概念混為一談。這些是不同的,必須單獨解決。

DNS 沒有可能連接到該伺服器的協議的概念,因此諸如路徑名 (/user1) 之類的 HTTP 數據在 DNS 意義上是無意義的。在地址解析階段,它們甚至不會與 DNS 伺服器通信。請記住,www.domain.com的域名並不意味著它只能用於網路流量;唯一的約定是www.domain.com通常在另一端執行一台機器,偵聽埠 80 並為網站提供服務,但它同樣也可以為 SSH 流量、郵件伺服器等提供服務。

如果您需要執行 Web 流量的重定向,這是在 HTTP 級別完成的,並且 DNS 對正在完成的實際重定向的影響很小(即使您使用 DNS 別名或 CNAME 記錄;見下文)。

如果我的網站在 Amazon S3 上執行,我能做到嗎?(原文如此)

是的。有兩種可能的路線:

  1. 使用執行 Web 伺服器(Apache、nginx 或類似伺服器)的 EC2 實例。為www.userXowndomain.com配置 DNS以解析為該伺服器的 IP 地址。為每個指向 Web 伺服器的使用者域配置Apache 虛擬主機。根據此 SF question配置每個虛擬主機以重定向到所需的 URL ( www.mywebsite.com/user1 ) 。

淨效果:DNS 解析為 IP,瀏覽器連接到 IP,Apache 辨識域並映射到虛擬主機,虛擬主機配置發送 HTTP 重定向到正確的 URL。 2. 如果您不想僅針對 Web 流量執行完整的 EC2 實例,則可以為此目的使用 S3 儲存桶,並結合路由 53 將流向每個www.userXowndomain.com的流量引導到儲存桶。儲存桶隨後配置為重定向到適當的 URL。

注意:如果您有一個用於託管www.mywebsite.com的 EC2 實例,那麼它沒有理由也不能用於進行重定向。這只是額外的 Apache 虛擬主機配置,因此不需要單獨的實例。

如果是,如何以及對可以連結多少個域有任何限制?

沒有硬性限制。由於 Apache 對虛擬主機數量的配置(主要是由於日誌記錄和打開文件描述符的數量),可能會人為地施加限制,但可以通過仔細配置來克服這些限制。

如果重定向非常繁忙,則軟限制可能會發揮作用,從而導致伺服器過載。這將是您可以通過正常性能監控檢測到的東西,並引入更多伺服器以進行負載平衡(或將繁忙的工作剝離到專用機器)。除非您正在執行非常高流量的網站,否則這不太可能成為問題。

這可以通過 S3 本身解決,還是我需要使用 Route 53?(原文如此)

如上所述,請注意不要將 DNS 與 HTTP 混淆。如果使用者的域有自己的 DNS 服務,例如由註冊商提供的服務,您可以使用它來配置指向執行 Web 伺服器重定向的 EC2 實例的 DNS 記錄。您也可以將域的名稱伺服器委託給路由 53。最終答案可能取決於您與客戶的關係:前一種解決方案允許客戶管理自己的 DNS(例如,用於其他服務,例如郵件)。後者將整個 userXowndomain.com 命名空間的控制權交給您,這意味著您必須配置與該域相關的 DNS 的所有方面。這可能包括但不限於郵件傳遞的 MX 記錄、客戶想要的任何其他子域、別名、SPF 記錄等。

Linux/Apache 伺服器是更好的平台來實現這一點嗎?如果是,如何設置?

在 Linux 上執行的 Apache 將是實現這一目標的一種方法,並且這樣做可能具有成本效益。還有很多其他的 Web 服務平台同樣能夠發出 HTTP 重定向。配置與每個 Web 伺服器的相應頁面一致,為每個域配置虛擬主機並為該域配置 HTTP 重定向。


什麼類型的重定向?

RFC 2616中的 HTTP/1.1 標准定義了多種類型的重定向。您需要指定 Web 伺服器應用於重定向www.userXowndomain.com –> www.mydomain.com/userX的重定向類型。研究 RFC 將是有益的,因為不同的重定向意味著不同的行為,並且可能對 SEO 等問題產生次要影響。

最常見的重定向是由HTTP 狀態程式碼 301307定義的重定向,分別對應於“永久移動到另一個 URL”和“暫時移動到另一個 URL”。特別是臨時移動的 URL 意味著原始 URL ( www.userXowndomain.com ) 將來仍應用於訪問所請求的資源,並且使用者代理不應更新其記錄以永久使用www.mywebsite.com/ user1作為初始 URL。

過去也使用過使用“框架集”的重定向。在這種情況下,您在每個使用者的域中託管一個網頁,該網頁使用帶有單個框架的標籤,指向正確的 URL。通常應避免這種方法。


使用 DNS 別名作為“重定向”

關於 DNS 和 HTTP 協議在 Web 瀏覽中的作用經常存在混淆,特別是因為 DNS 提供 CNAME 或“別名”記錄,將一個域的 DNS 返回別名為另一個域的輸出。

DNS 別名對 Web 瀏覽器*沒有任何意義;*DNS 別名只是告訴 DNS 解析器應該像請求域 Y 一樣回答對域 X 的請求,並且通過跟踪鏈,最終應該到達瀏覽器連接的 IP 地址。然後瀏覽器連接到那個地址,仍然認為它正在與最初請求的域(例如www.userXowndomain.com)對話。

您可以使用 CNAME 為每個使用者域實現重定向,其中www.userXowndomain.com指向 DNS 中的www.mywebsite.com域。但是,您仍然需要使用虛擬主機或類似配置 Web 伺服器,以匹配對www.userXowndomain.com的每個請求,並重定向到www.mywebsite.com/userX。DNS 只是告訴瀏覽器如何訪問 Web 伺服器;它不會告訴瀏覽器重定向 URL 是什麼。

然而,這種配置並非沒有缺點。如果要重定向區域的根目錄(即 http://userXowndomain.com),則在區域根目錄使用 CNAME會受到限制,因為根據RFC(例如用於郵件傳遞的 MX 記錄)。根據您為使用者提供的服務,這可能不是問題,也可能是阻礙因素。


使用註冊商?

我應該注意到,許多域名註冊商提供基本的 301 或 307 HTTP 重定向作為域名註冊的標準,因此您可以通過使用他們的服務而不是建構自己的服務來避免相當大的複雜性。

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