![从第三方网站提供多个域名](https://linux22.com/image/518501/%E4%BB%8E%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BD%91%E7%AB%99%E6%8F%90%E4%BE%9B%E5%A4%9A%E4%B8%AA%E5%9F%9F%E5%90%8D.png)
我想知道像 Google 网站和 shopify 这样的网站如何允许客户创建网站,然后将其链接到自己的域名?Google 网站允许用户在用户提供的域名上创建自己的网站,而 shopify 允许用户创建自己的电子商务网站 - 再次,他们可以提供自己的域名来用于访问创建的网店。
在这两种情况下,表面上都是通过在浏览器中输入用户域名来访问网站,但实际上网站是由第三方公司(Google、Shopify 等)托管的。
这怎么可能呢?有谁知道这是如何(可能)实现的吗?
答案1
Google 要求您创建 CNAME DNS 记录以将您的域名指向他们的主机记录。
例如:
shop.yourdomain.com IN CNAME ghs.google.com
当您的浏览器访问 shop.yourdomain.com 时,DNS 记录会将您的请求重定向到服务器 ghs.google.com。HTML 请求中的 HOST 标头表示您的浏览器正在请求 shop.yourdomain.com,而 google 的服务器会看到此信息并将您指向相应的内容。
答案2
HTTP 1.0 请求有一个Host
标头,浏览器会用 URL 中的实际主机名填充该标头,然后服务器会解析该标头以找出哪个虚拟主机应该处理该请求。
答案3
这很简单。托管服务提供商设置一个在给定 IP 地址上运行的 HTTP 服务器。我们假设该 IP 地址为 82.10.11.12。
我们的 Web 服务器可以通过 HTTP 处理发往 82.10.11.12 的请求。这由 DNS 控制。我可以有任意数量的 DNS 条目(A 记录)指向此 IP,例如:
www.mysite.com. IN A 82.10.11.12
anothersite.com. IN A 82.10.11.12
awesomesite.com. IN A 82.10.11.12
rubbishsite.net. IN A 82.10.11.12
etc
如果您的 Web 浏览器支持 HTTP/1.1,则当您连接到此站点时,您在浏览器中输入的地址将发送到 Web 服务器。这称为主机标头。然后,Web 浏览器将提供与您在浏览器中输入的名称匹配的虚拟主机。这就是基于名称的虚拟主机的工作原理。
请注意,这是通过 HTTP/1.1 实现的。不是1.0 如第一个答案所述。
有关 HTTP 的简单概述,请参阅:http://www.jmarshall.com/easy/http
有关更多详细信息,请参阅 RFC。