获得在线托管后,你可能想了解如何在一个服务器上托管多个网站。虽然这看起来很复杂,但随着深入了解,你会发现借助技术指南可以做到这一点。
各种网络服务器可以为你提供免费、开源且在全球广泛使用的服务。不过,在说明如何在一个服务器上托管多个网站之前,我们应该先理解什么是网络服务器及其工作原理。
什么是Web服务器?
Web 服务器存储并提供网站的内容,包括文本、图像、视频和应用数据。换句话说,请求这些内容的客户端可以通过 Web 服务器获取它们。最常见的客户端是 Web 浏览器,当用户点击链接或下载文件时,它会从你的网站请求数据。
网站服务器通过以下方式进行通信 超文本传输协议 (HTTP) 通过网页浏览器访问。大多数网页内容采用超文本标记语言(HTML)编码。内容可以是静态的(如文本和图像),也可以是动态的(如客户标记的购物清单)。大多数网络服务器支持 server-side-scripting 用编程语言将业务逻辑编码到通信层中以提供动态内容。通常支持 Active Server Pages (ASP)、JavaScript、PHP、Python 和 Ruby 等语言。
网络服务器如何工作?
Web 服务器的工作原理基于 client-server 模型。在这个标准结构中, client 从以下位置请求资源或服务 server.
Web 服务器处理客户端请求需要经过几个步骤:
- 当用户想要将内容加载到网站时,网络浏览器会请求访问权限(HTTP request)通过互联网。
- 网络浏览器搜索所请求网站的IP地址。它使用以下方式翻译网页的URL 域名系统(DNS) 或搜索其缓存。此过程将帮助你定位Web服务器,即托管站点文件的位置。
- 此时,Web服务器接收HTTP请求并通过其 HTTP server.
- 一旦HTTP服务器接受请求,它就会搜索服务器文件以获取相关数据。
- Web服务器将站点文件返回给发送请求的浏览器。之后,用户就能看到网站内容。
但请注意,如果HTTP服务器找不到或无法处理所请求的文件,你会在Web浏览器中看到错误消息。现在你已经了解了Web服务器的主要概念,可以轻松学习如何在一台服务器上托管多个Web服务器。
在一个服务器上托管多个网站:Apache
如果要在一台服务器上托管多个站点,应使用Apache的虚拟主机文件来指定必须使用哪个域。用于解析站点请求的方法之一称为 基于名称的虚拟主机。当有人访问你的站点时,请求会发送到服务器,服务器根据域名确定要提供哪个站点的文件。这种技术让你能在一台服务器上使用相同的IP托管多个站点。本指南文章将说明如何为每个域设置虚拟主机文件。在详细了解之前,请记住你应该以root账户登录。
Also Read: “Linux与Windows托管:哪一个更适合你?”
第 1 步:为每个网站创建目录
首先使用此命令安装apache2
对于基于Debian的系统
apt install apache2 -y
对于CentOS系统
yum install apache2 -y
你必须为要托管的每个站点创建一个目录 (在/var/www文件夹内)。以domain.com和domain2.com作为你的域名。
mkdir -p /var/www/domain.com/public_html
mkdir -p /var/www/domain2.com/public_html
步骤 2:设置文件夹权限
chmod -R 755 /var/www
第 3 步:设置索引页面
要查看主页,应确保为每个域创建了 index.html 文件。你可以设置简单的内容,例如 domain.com的测试 in this file.
vim /var/www/domain.com/public_html/index.html
domain.com的测试
现在你必须使用以下方式保存并退出 Escape 按钮并输入: wq
你可以使用下面的命令对第二个域重复所有这些步骤。
vim /var/www/domain2.com/public_html/index.html
第 4 步:为每个网站复制配置文件
为每个网站复制默认配置文件,这样后续创建新网站时才能使用默认副本。
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain.com.conf
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain2.com.conf
第 5 步:编辑每个站点的配置文件
至少你会在以下位置修改并添加高亮显示的代码行 <VirtualHost *:80> and </VirtualHost> tags.
Note that ServerAlias 是您域名的别称;在这种情况下,大多数时候您会在域名前加上 www,这样其他人既可以通过 www 方式访问您的网站,也可以通过非 www 方式访问(ServerName).
vim /etc/apache2/sites-available/domain.com.conf

使用以下方式再次退出并保存 wq。你需要为你的 domain2.com.conf 文件;请务必更新 ServerName, ServerAlias, and DocumentRoot 用于你的第二个域名。
Also Read: “Apache vs NGINX”
第六步:启用配置文件
你的服务器默认读取 000-default.conf 文件。但在上一步中,我们为每个域名创建了新的配置文件。所以需要禁用默认文件,改用新的配置文件。
a2dissite 000-default.conf
启用新创建的 .conf 文件,即可将服务器映射到你的域名。
a2ensite domain.com.conf
a2ensite domain2.com.conf
现在,让我们重启 Apache 以注册对它所做的更改。
systemctl restart apache2
第 7 步:验证 Apache 配置
启动 Apache 后,你可以通过编辑以下内容来验证配置是否生效 /etc/hosts 文件 on your computer or 你的域名的 DNS.
每个设置完成后,您可以在浏览器中访问您的网站,查看在第 3 步中创建的 index.html 页面。
Also read: On-Premises vs. Cloud
在一台服务器上托管多个网站:IIS
我们可以用 IIS (Internet Information Services) 网络服务器托管几十个甚至数百个网站。你可以在同一个 IIS 上托管多个网站,让它们监听和响应 TCP port不过,IIS 管理器的界面显示,你可以在不将网站绑定到 8080 等其他端口的情况下托管另一个网站。本节将介绍如何在同一个 IIS 服务器上托管多个网站,并将它们绑定到同一端口和 IP 地址,或绑定到不同的 IP 地址。
如何在 Windows 服务器上安装 IIS?
在 Windows 上安装 IIS 时,会创建一个空的默认网站并监听 标准网络 HTTP 端口 – TCP 80. In technical terms, our site is bound to the port TCP/80. We must enter the name of the IIS server (“http://web-srv1”) or its IP address (“http://192.168.1.100”) in your browser so that we open this site.
步骤 1:绑定 IIS 网站
在 Windows Server 上运行的 IIS 网络服务器可以帮助你托管多个网站。但是,IIS 只有在每个网站都有唯一标识的情况下,才能正确分配 HTTP 请求。IIS 网站包含三个属性,这些属性的组合对每个网站都是独一无二的。这些属性如下所示:
- TCP 端口号
- an IP address
- 主机头(主机名)
托管网站的信息存储在 ServerBindings IIS Metabase 的属性,格式如下: IP:Port:Hostname。因此,如果你想在一台服务器上托管多个网站(共用同一端口和IP地址),你需要使用 独特的 Host 标头.
你可能会想,什么是主机头?主机头是发送到服务器的 HTTP 请求的一部分,用于指定该请求针对的是哪个网站。因此,我们必须在网络服务器端配置这个主机头。请注意,DNS 应该包含与 IIS 网络服务器的主机名和 IP 地址相匹配的正确记录。
假设你已有一个网站运行在 IIS 服务器上,监听 80 端口。现在要在同一端口上绑定第二个网站,该怎么做?
第二步:绑定第二个 IIS 网站
In the Internet Information Service (IIS) Manager, You have to make another website using the Add Website window and call it TestSite; This website will be located in C:\inetpub\TestSite. Pay attention not to specify the hostname yet.
复制网站内容后 C:\inetpub\在TestSite中打开Internet Information Service (IIS) Manager,在服务器主机名下添加站点,向导会帮你完成配置。


点击确定后,会显示一条警告信息,告诉你不能使用 binding *:80 这两个网站都适用。


同意此警告后,您将有另一个网站绑定到端口 80。因此,您必须停止第一个网站才能启动第二个网站。下面的图示会帮助您更好地理解这一点。

Windows VPS 托管
查看我们价格实惠的 Windows VPS 方案,采用强大硬件、最低延迟,以及免费 Windows 任选!
领取你的免费 Windows使用主机头在 IIS 服务器上托管多个网站
您需要为第二个 IIS 网站选择另一个名称(主机名),以创建唯一的绑定。操作步骤如下,右键点击 TestSite and select Edit Bindings。选择所需的绑定方式,然后点击 Edit.
如下图所示,我们需要指定用户要访问的唯一主机名。在本教程中,我们使用 TestSite,所以在 Hostname 字段中输入它。

你可以通过命令提示符配置 IIS 站点绑定。如果使用 IIS 7 或更新版本,运行配置 IIS 站点绑定的命令后,你会看到类似下面这样的内容:
C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:testsite /+bindings.[protocol='http',bindingInformation='*:80:testsite']
像第一个网站一样,你也可以启动第二个网站。

此时,您需要为服务器添加一个 DNS 别名(A 或 CNAME 记录),指向您的 IIS 网络服务器的 IP 地址或主机名。如果您使用 Active Directory 域,需要在域控制器上创建 DNS 记录。IIS 允许您创建 CNAME 在 DNS 控制台中为 TestSite 创建记录(dnsmgmt.msc),并将 IIS 服务器的域名设置为 FQDN 目标主机。

你也可以通过 PowerShell 和以下命令创建 DNS 记录:
Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.woshub.com -Name testsite -ZoneName woshub.com
现在我们来尝试打开 http://TestSite 在浏览器中。如果配置正确,应该能够成功打开。

Linux 主机服务简化版
想要更好的方式来托管网站和网络应用?正在开发新项目?或者只是不喜欢 Windows?这就是我们提供 Linux VPS 的原因。
获取你的 Linux VPS在 IIS 服务器上运行多个使用不同 IP 地址的网站
现在我们来讨论如何在 IIS 网络服务器上运行两个不同 IP 地址的网站。首先,你需要在 Windows 服务器上添加一个独立的 VLAN 接口,或者为网卡分配一个额外的 IP 地址(别名)。
在本教程中,服务器的主 IP 地址是 192.168.13.100,我们将在同一网络适配器上添加 IP 别名 192.168.13.101:
Get-NetIPAddress | ft IPAddress, InterfaceAlias, SkipAsSource
New-NetIPAddress –IPAddress 192.168.13.101 –PrefixLength 24 –InterfaceAlias “Ethernet” –SkipAsSource $True
现在你需要在 DNS 服务器上为新网站创建一条 A 记录:
Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName woshub.com -TimeToLive 01:00:00 –CreatePtr
接下来要配置网站绑定设置,将网站绑定到主机的额外 IP 地址。你可以使用 PowerShell 来管理 IIS 服务器上网站的绑定。为此需要使用 WebAdministration 模块:
Import-Module WebAdministration
你可以查看所有可用 IIS 网站及其绑定的信息:
Get-IISSite
或仅查看单个网站的信息:
(Get-Website -Name NewSite).bindings.Collection

使用以下命令修改网站的绑定。这个命令允许你更改 IP 地址、端口或域名:
Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:80:NewSite1" -PropertyName 'Port' -Value '8080'
Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:8080:NewSite1" -PropertyName 'IPAddress' -Value '192.168.13.100'
运行此命令可以为特定 IIS 网站添加新的绑定:
New-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:" -Protocol http
移除绑定使用以下命令:
Remove-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:"
正如你在这里看到的,你可以在 IIS 网络服务器上运行多个网站,既可以使用不同的 IP 地址,也可以在同一 IP 地址和 TCP 端口号上运行。
最后的话:在一台服务器上托管多个网站
本文主要介绍了服务器的基本概念,帮助你学习如何在单台服务器上托管多个网站。我们还提供多种 Linux VPS 托管方案,你可以用来在一台服务器上运行不同的网站。Cloudzy 的计划可以降低运维多台服务器的成本,同时你也可以充分利用我们的服务。此外,你可以轻松升级服务器的资源,包括 RAM、存储空间、处理器和带宽。
FAQ
一台网络服务器能托管多个网站吗?
如果你有一台资源充足的大型服务器,具有足够的 HDD 空间、RAM 和 CPU 性能,你可以使用虚拟主机来托管多个网站。你可以在网络服务器上托管无限数量的网站。
怎样在一台服务器上运行两个网站?
在单台网络服务器上托管多个网站称为虚拟服务器。此外,你应该确保选择的服务器有足够的资源来处理流量和磁盘空间需求。
VPS 服务器有什么用途?
VPS 是一种托管服务,可以为你提供服务器上的专用(私有)资源。需要注意的是,使用 VPS 是比共享托管更安全、更稳定的方案,后者不会为你提供专用服务器空间。
为什么开发者选择 VPS?
VPS 托管已成为广泛使用的选择,因为它的成本通常低于专用托管,同时提供比共享托管更好的可靠性、安全性和性能。