虚拟主机托管是一种用于在单个服务器(或服务器池)上托管多个域名(对每个名称进行单独处理)的方法。这允许一台服务器共享其资源,例如内存和处理器周期,而无需提供的所有服务都使用相同的主机名。虚拟主机一词通常用于指代Web服务器,但其原理确实会延续到其他Internet服务。

  一种广泛使用的应用程序是共享虚拟主机。共享Web托管的价格低于专用Web服务器的价格,因为许多客户可以托管在单个服务器上。单个实体要在同一台计算机上使用多个名称也很常见,这样名称可以反映所提供的服务,而不是这些服务恰好位于何处。

  虚拟主机有两种主要类型,即基于名称和基于IP。基于名称的虚拟主机使用客户端提供的主机名。这样可以节省IP地址和相关的管理开销,但是所服务的协议必须在适当的位置提供主机名。特别是,将基于名称的虚拟主机与SSL / TLS一起使用存在很大的困难。基于IP的虚拟主机为每个主机名使用一个单独的IP地址,并且可以使用任何协议来执行,但是每个服务的域名都需要一个专用的IP地址。基于端口的虚拟主机原则上也是可行的,但实际上很少使用,因为它对用户不友好。

  可以组合基于名称和基于IP的虚拟主机:一台服务器可以具有多个IP地址,并在某些或所有这些IP地址上提供多个名称。当将SSL / TLS与通配符证书一起使用时,此技术很有用。例如,如果服务器操作员拥有两个证书,一个证书用于* .example.com,一个证书用于* .example.net,则该操作员可以使用相同的IP地址来提供foo.example.com和bar.example.com,但需要baz.example.net的单独IP地址。推荐阅读:为什么大家喜欢选择虚拟主机?

  基于名称的虚拟主机将多个主机名用于同一IP地址。

  基于名称的虚拟主机所需的技术先决条件是具有HTTP /1.1支持(今天很常见)的Web浏览器,以便在请求中包含目标主机名。这允许服务器在一个IP地址后面托管多个站点,以传递正确的站点内容。更具体地说,这意味着设置Host HTTP标头,这在HTTP / 1.1中是必需的。

  例如,服务器可能正在接收对两个域的请求,即www.example.com和www.example.net,这两个域都解析为相同的IP地址。对于www.example.com,服务器将从目录/ var / www / user / Joe / site /发送HTML文件,而对www.example.net的请求将使服务器从/ var / www / user提供页面。/ Mary / site /。同一域的两个子域可以相等地托管在一起。例如,博客服务器可以同时托管blog1.example.com和blog2.example.com。

  基于名称的虚拟主机的最大问题是难以托管多个运行SSL / TLS的安全网站。由于SSL / TLS握手发生在将预期的主机名发送到服务器之前,因此服务器不知道在握手中要显示哪个证书。一个证书可以通过“主题名称”字段或通配符来覆盖多个名称,但是此方法的实际应用受到管理注意事项和通配符匹配规则的限制。 TLS的扩展名为Server Name Indication(服务器名称指示),该名称在握手开始时就提供了名称,以解决该问题,但某些旧客户端(尤其是Internet Explorer)除外(在Windows XP或更旧的Android版本上),但未实现SNI。

  此外,如果域名系统(DNS)无法正常运行,即使知道IP地址,也很难访问虚拟主机的网站。如果用户尝试使用IP地址来联系系统(如http://10.23.45.67/),则Web浏览器将发送IP地址作为主机名。由于Web服务器依靠Web浏览器客户端告诉它要使用的服务器名称(vhost),因此服务器将使用默认网站进行响应-通常不是用户期望的网站。推荐阅读:如何选择虚拟主机

  在这种情况下,一种解决方法是将IP地址和主机名添加到客户端系统的hosts文件中。使用域名访问服务器应该可以再次工作。但是,用户在执行此操作时应格外小心,因为对主机名和IP地址之间的真实映射所做的任何更改都将被本地设置覆盖。对于一般的Web用户来说,这种解决方法并不是真正有用,但是在修复DNS记录时,它可能对站点管理员有用。

  使用基于IP的虚拟主机时,每个站点(一个DNS主机名或一组相同的DNS主机名)都指向一个唯一的IP地址。 Web服务器配置有多个物理网络接口,同一物理接口上的虚拟网络接口或一个接口上的多个IP地址。 Web服务器可以为每个IP地址打开单独的侦听套接字,也可以使用单个套接字在所有接口上侦听,并在接受连接后获取TCP连接所接收到的IP地址。无论哪种方式,它都可以使用IP地址来确定要服务的网站。客户端不参与此过程,因此(与基于名称的虚拟主机不同)不存在兼容性问题。更多内容请阅读:美国虚拟主机的优势有哪些

  这种方法的缺点是服务器需要为每个网站使用不同的IP地址。这增加了管理开销(既向服务器分配地址又向互联网注册表证明使用这些地址的合理性),并导致IPv4地址耗尽。

  HTTP的默认端口号是80。但是,大多数Web服务器可以配置为在几乎任何端口号上运行,只要该端口号未被服务器上的任何其他程序使用。有一个HTTP Secure特殊端口443,需要特殊配置(请参阅服务器名称指示)。基于端口的网站明确绑定到唯一的端口号和IP地址。在这种情况下,该IP地址用于托管多个网站。用于公共IP地址的唯一端口号将单个网站与绑定到同一IP地址的其他网站区分开。

  虚拟网络托管通常在商业模式旨在为客户提供低成本网站托管的公司中大规模使用。全球绝大多数的网络托管服务客户网站都使用虚拟托管技术托管在共享服务器上。

  许多商业公司将虚拟服务器用于内部目的,出于技术或管理上的原因,运营多个独立的网站,例如客户Extranet网站,Employee Extranet,内部Intranet和不同部门的Intranet。如果网站体系结构中没有安全性问题,则可以使用虚拟主机技术将它们合并到单个服务器中,从而减少管理和管理开销以及支持业务所需的单独服务器的数量。那么影响虚拟主机的速度因素有哪些?