虚拟主机 Ubuntu

17 Mar 2025 | 6 分钟阅读

虚拟主机简介

虚拟主机(Virtual Host)一词是指在一台设备上运行多个网站(例如 enterprise1.test.comenterprise2.test.com)的做法。虚拟主机可以是“基于 IP”的,这意味着我们为所有网站分配一个独立的 IP 地址;或者可以是“基于名称”的,这意味着一个 IP 地址上运行多个名称。对于最终用户来说,它们运行在同一台物理服务器上的事实是不可见的。

Apache 服务器是最早支持基于 IP 的虚拟主机的服务器之一。Apache 的 1.1 及更高版本同时支持基于名称和基于 IP 的虚拟主机。后一种虚拟主机变体有时也称为非 IP 或基于主机的虚拟主机。

在其早期,虚拟主机开始的目的是在一台设备上托管多个网站。它还定义了共享单个机器资源,如 CPU 和内存。这些资源以最大化利用的方式进行管理和共享,以实现最大化的能力。

随着云计算的发展,虚拟主机比以往承担了更多的使命,包括虚拟存储托管、虚拟服务器托管、虚拟应用程序托管,有时甚至是整个/虚拟数据中心托管等解决方案。

虚拟主机工作原理

设置虚拟主机的方法有很多,以下列出了并解释了今天几乎所有使用的方式:

Virtual Host Ubuntu
  • 基于 IP
  • 基于名称
  • 基于端口

基于 IP

这是最简单的方法之一,可以根据 IP 地址使用不同的指令。在基于 IP 的虚拟主机中,我们为所有域使用不同的 IP 地址。

一个服务器只有一个 IP 地址,但多个 IP 地址指向服务器的各个域。这种虚拟主机是通过为一台服务器创建多个 IP 地址来实现的。

基于名称

这些类型的虚拟主机是当今最常用和最普遍的虚拟主机方法。它将为服务器上提供的每个域使用一个 IP 地址。当浏览器尝试连接服务器时,基于名称的虚拟主机将向服务器发送一条消息,通知它正在尝试连接的域名。服务器会检查主机配置,然后将请求与正确的网站一起返回,前提是提供了域名。

基于端口

这种类型的虚拟主机也与基于 IP 的虚拟主机相同。两者之间的主要区别在于,我们不为每个虚拟主机使用不同的 IP 地址,而是使用服务器配置为响应多个网站的端口,这些网站依赖于服务器端口。

虚拟主机

虚拟主机是一种在一台服务器上托管多个域名(并单独处理所有名称)的技术。它允许服务器共享其资源,如处理器周期和内存,而无需每个服务都使用相同的名称。虚拟主机一词通常用于 Web 服务器的引用,但其基础也适用于其他 Internet 服务。

共享 Web 主机是最广泛使用的应用程序之一。由于一台服务器可以托管多个客户,因此共享 Web 主机的成本低于独立 Web 服务器。此外,单个实体希望在一台机器上使用多个名称也非常普遍,这样名称就可以反向服务,而无需显示这些服务的托管位置。

  • 虚拟主机主要有两种类型:基于 IP 和基于名称。
  • 基于名称的虚拟主机使用客户端提供的托管名称。
  • 它节省了 IP 地址和相关的管理开销。
  • 然而,所服务的协议必须在正确的时间点提供主机名。
  • 基于名称的虚拟主机在使用 TLS/SSL 时存在严重问题。
  • 基于 IP 的虚拟主机为所有主机名(网站)使用独立的 IP 地址,并且可以与协议一起实现,但需要为每个提供的域名提供一个独立的 IP 地址。
  • 此外,基于端口的虚拟主机在约定中是可能的,但在实践中很少使用,因为它对用户来说不熟悉。

基于 IP 和基于名称的虚拟主机可以合并:一台服务器可能拥有多个 IP 地址,并在其中一些或所有 IP 地址上提供多个名称。这在使用带有通配符证书的 TLS/SSL 时非常有用。

带虚拟主机的 HTTP 服务器

在本节中,我们将讨论 HTTP 服务器上 i Web 服务器的虚拟主机类型。虚拟主机概念允许多个网站在一台 Web 服务器或系统上运行。服务器通过其主机名进行识别。客户通过 IP 地址或主机名路由到正确的虚拟主机来访问网站。虚拟主机允许企业共享一台服务器,以便所有企业都能拥有自己的域名。

HTTP 服务器上的虚拟主机类型

在 HTTP 服务器上,有三种类型的虚拟主机:

Virtual Host Ubuntu
  • 基于 IP 的虚拟主机
    这种类型的虚拟主机需要为每个主机名(网站)分配一个独立的 IP 地址。这种方法效果很好,但需要为所有虚拟主机提供独立的 IP 地址。
  • 基于名称的虚拟主机
    它允许一个 IP 地址托管多个主机名(网站)。这种方法实际上允许无限数量的服务器,易于使用和配置,并且不需要额外的软件或硬件。这种方法的主要缺点是客户端应支持 HTTP 1.1 版本,该版本在 HTTP 文档请求中包含主机名信息。目前几乎所有浏览器都支持 HTTP 1.1 版本,但仍有一些旧浏览器仅支持 HTTP 1.0 版本。
  • 动态虚拟主机
    它通过添加内容目录动态地允许我们添加主机名(网站)。此方法是基于输入 IP 地址和用于满足请求的文件的路径名中的主机内容:头信息而自动工作的。
  • 动态虚拟主机的优点如下:
    • 配置文件小,服务器启动更快,占用的内存更少。
    • 添加虚拟主机不需要修改配置文件或重启服务器。
  • 动态虚拟主机的缺点是我们无法为每个虚拟主机拥有单独的日志文件。

如何在 Ubuntu 中设置虚拟主机?

引言

在互联网上,所有网站都托管在主机(Web 服务器)上,该主机连接到具有任何公共 IP 地址的网络,并且可以处理一台浏览器(客户端)(如 Internet Explorer、Firefox 或 Chrome)上的多个网页的请求。如果我们想在我们的机器上托管任何网站,我们首先需要安装一个 Web 服务器。其中最好的是 Apache 服务器,它是一个开源应用程序,适用于 Windows 和 Unix 系统。

但是,如果我们需要在同一台服务器上托管多个网站,而只有单个公共 IP 地址可用怎么办?在这种情况下,我们需要设置虚拟主机,以便在 Apache 上使用单个 IP 地址协作不同的域。

我们需要通过 SSH 连接到我们的服务器。我们将转到下一步,并在本地服务器的情况下打开服务器的终端窗口。

安装 Apache

Apache HTTP Server 是一个著名的开源服务器,为开发人员提供了广泛的支持、强大的功能和灵活性。Apache 服务器的配置不是在一个单一的、庞大的文件中完成,而是通过模块化设计,可以根据需要修改和添加新文件。在这种模块化设计中,我们可以创建一个名为虚拟主机的独立域或站点。

首先,我们需要使用以下命令更新我们的系统,以便从官方 Ubuntu 存储库安装 Apache 2。


Virtual Host Ubuntu

然后,使用以下命令安装 Apache 2。


Virtual Host Ubuntu

Apache 应该被包含在我们的防火墙异常中,因为它与外部通信。如果使用 UFW,我们可以通过输入以下命令允许客户端和 Apache 之间的双向通信。

Apache 应该已经运行了。我们可以使用以下命令检查其状态。


Virtual Host Ubuntu

之后,我们将打开浏览器窗口并连接到我们的服务器 IP 地址。

如果 Web 服务器安装成功,将显示 Apache 的欢迎页面。

如果不是这种情况,则在安装 Apache 时可能会出现一些问题。在这种情况下,请卸载 Apache 并继续新的安装过程。我们可以使用以下命令卸载 Apache。


下一个主题Grub Customizer Ubuntu