50% off 所有套餐限时优惠,起价 $2.48/mo
13 min left
网页与商业应用

在单个服务器上托管多个网站(Apache 和 IIS)🌐

Lily Carnell By Lily Carnell 13 min read Updated Sep 18, 2023
在单个服务器上托管多个网站(Apache 和 IIS)🌐

获得在线托管后,你可能想了解如何在一个服务器上托管多个网站。虽然这看起来很复杂,但随着深入了解,你会发现借助技术指南可以做到这一点。

各种网络服务器可以为你提供免费、开源且在全球广泛使用的服务。不过,在说明如何在一个服务器上托管多个网站之前,我们应该先理解什么是网络服务器及其工作原理。

什么是Web服务器?

Web 服务器存储并提供网站的内容,包括文本、图像、视频和应用数据。换句话说,请求这些内容的客户端可以通过 Web 服务器获取它们。最常见的客户端是 Web 浏览器,当用户点击链接或下载文件时,它会从你的网站请求数据。

网站服务器通过以下方式进行通信 超文本传输协议 (HTTP) 通过网页浏览器访问。大多数网页内容采用超文本标记语言(HTML)编码。内容可以是静态的(如文本和图像),也可以是动态的(如客户标记的购物清单)。大多数网络服务器支持 server-side-scripting 用编程语言将业务逻辑编码到通信层中以提供动态内容。通常支持 Active Server Pages (ASP)、JavaScript、PHP、Python 和 Ruby 等语言。

网络服务器如何工作?

Web 服务器的工作原理基于 client-server 模型。在这个标准结构中, client 从以下位置请求资源或服务 server.

Web 服务器处理客户端请求需要经过几个步骤:

  1. 当用户想要将内容加载到网站时,网络浏览器会请求访问权限(HTTP request)通过互联网。
  2. 网络浏览器搜索所请求网站的IP地址。它使用以下方式翻译网页的URL 域名系统(DNS) 或搜索其缓存。此过程将帮助你定位Web服务器,即托管站点文件的位置。
  3. 此时,Web服务器接收HTTP请求并通过其 HTTP server.
  4. 一旦HTTP服务器接受请求,它就会搜索服务器文件以获取相关数据。
  5. 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

Site info
Site info

使用以下方式再次退出并保存 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,在服务器主机名下添加站点,向导会帮你完成配置。

hostwebsites.png

add-new-site-iis
添加网站窗口

 

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

addwebsite

绑定端口 80 已分配给另一个网站
Check Binding

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

4 为网站分配不同的绑定端口
为网站分配不同的绑定端口

windows-original-vps Windows VPS 托管

查看我们价格实惠的 Windows VPS 方案,采用强大硬件、最低延迟,以及免费 Windows 任选!

领取你的免费 Windows

使用主机头在 IIS 服务器上托管多个网站

您需要为第二个 IIS 网站选择另一个名称(主机名),以创建唯一的绑定。操作步骤如下,右键点击 TestSite and select Edit Bindings。选择所需的绑定方式,然后点击 Edit.

如下图所示,我们需要指定用户要访问的唯一主机名。在本教程中,我们使用 TestSite,所以在 Hostname 字段中输入它。

test-iis-site-binding
编辑网站绑定

你可以通过命令提示符配置 IIS 站点绑定。如果使用 IIS 7 或更新版本,运行配置 IIS 站点绑定的命令后,你会看到类似下面这样的内容:

C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:testsite /+bindings.[protocol='http',bindingInformation='*:80:testsite']

像第一个网站一样,你也可以启动第二个网站。

start-iis-site
Manage Websites

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

在 DNS 控制台中为 TestSite 创建 CNAME 记录
在 DNS 控制台中为 TestSite 创建 CNAME 记录

你也可以通过 PowerShell 和以下命令创建 DNS 记录:

Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.woshub.com -Name testsite -ZoneName woshub.com

现在我们来尝试打开 http://TestSite 在浏览器中。如果配置正确,应该能够成功打开。

multiple-iis-sites-on-same-80-http-port
testsite 的最终结果

 

linux-vps 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

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 托管已成为广泛使用的选择,因为它的成本通常低于专用托管,同时提供比共享托管更好的可靠性、安全性和性能。

Share

博客更新

Keep reading.

Odoo 评测功能图像,左侧为大标题文字,右侧为 Odoo 徽标,周围环绕着漂浮的应用界面面板,背景为柔和紫色云主题。
网页与商业应用

Odoo 综合评测:这款 ERP 是否适合你的业务

Odoo 是增长型企业最常考虑的 ERP 平台之一,原因很简单:它在一个地方承诺了很多功能。销售、会计、库存。

Jim SchwarzJim Schwarz 11 min read
开源 WordPress 替代方案特色图像,采用彩色渐变背景、桌面显示器、代码编辑器、模糊仪表板预览以及左侧大标题文本。
网页与商业应用

最佳开源 WordPress 替代方案,为开发者量身打造

WordPress 仍然重要,仍为大量网站提供良好支持。其插件库托管超过 62,000 个插件,主题库提供超过 14,000 个免费主题。

Jim SchwarzJim Schwarz 14 min read
Automad 与 WordPress 特色图像,展示两个平台的标志和标题,询问开发者应该选择哪个 CMS。
网页与商业应用

Automad 与 WordPress:两个顶级 CMS 平台的深度对比

Automad 和 WordPress 用两种截然不同的方式解决同一个问题。Automad 是扁平文件 CMS 和模板引擎,内容存储在文件中而不是数据库,而 WordPress

Jim SchwarzJim Schwarz 9 min read

Ready to deploy? From $2.48/mo.

独立云服务,始于2008年。AMD EPYC、NVMe,40 Gbps。14天退款保障。