Nginx被设计为在单个服务器和IP地址上处理多个域。换言之,如果您的服务器用作web服务器,并且只分配了一个IP地址,那么您需要使用Nginx虚拟主机才能在服务器上运行多个网站或域。
在开始本教程之前,您需要安装Nginx。要了解如何安装它,请阅读我们关于在Linux上安装NginxWeb服务器的优秀指南。
什么是虚拟主机?
如果你不确定什么是虚拟主机,我来解释一下。这是Apache HTTP服务器的一个术语;然而,它也被Nginx用户普遍使用。Nginx的专有名词是
服务器块
.
相关:Apache与Nginx:您应该选择哪个Web服务器
简而言之,虚拟主机是一种在单个服务器上托管多个域名的方法。
虚拟主机是如何工作的?
当你在服务器上启动像Nginx这样的网络服务器软件时,该网络服务器会将自己绑定到一个或多个网络端口。通常,对于web服务器来说,这将是端口80和443。
当计算机访问网站时,它会通过互联网向服务器发送请求,服务器会收到该请求。但是,首先,服务器将查看请求发送到的目标端口。
接下来,它将使用该目标端口来确定将该信息转发到的应用程序。这意味着您的web服务器只能有一个应用程序接收请求。
但是如果你想在同一台服务器上运行两个网站怎么办?当接收到请求网站的数据包时,服务器必须在决定返回什么信息之前确定请求的是哪个网站。
重要的是要理解,无论请求什么网站,服务器都无法根据端口号和目的端口识别客户端试图访问的网站。
所以服务器所要做的就是说,“我正在向Nginx发送这个请求。”从那里,Nginx必须决定发送什么。
这就是服务器块发挥作用的时候。它们可以根据请求的IP地址为其他网站提供服务,也可以根据使用的域名为不同的网站提供服务。
因此,当您键入网站名称时,例如
www.example.com
,并且服务器接收到它,Nginx将查看HTTP标头,以查看请求的服务器名称。
然后,基于配置的虚拟主机,服务器确定哪个目录存储网站文件,并基于服务器名称向客户端传递正确的响应。
如何创建Nginx虚拟主机(服务器块)
我们可以在两个目录中创建和存储虚拟主机配置文件。它们都位于
/etc/nginx
目录这两个目录的名称是
可用的站点
和
已启用站点
.
/etc/nginx/站点可用
:定义单个虚拟主机(网站)的目录。请记住,Nginx不会使用此目录中的配置文件
除非它们被链接
到
/etc/nginx/sites已启用
目录。
/etc/nginx/sites已启用
:Nginx积极服务的虚拟主机(网站)列表。
你想知道为什么我们需要两个目录来存储我们的虚拟主机文件吗?答案是,通过这种方式,我们可以在Nginx服务器上创建许多虚拟主机文件,但我们可以根据需要启用它们。
在本指南中,我们将在Nginx服务器中创建虚拟主机文件,以承载多个域的多个站点。域名是
website1.com
以及
website2.com
.
1.创建目录结构
首先,我们必须为每个虚拟主机创建一个目录来存储不同的网站内容。我们将把这些目录放在
/var/www
并在每个域名后命名。
运行以下命令以创建目录:
sudo mkdir-p/
var
/www/website1.com
sudo mkdir-p/
var
/www/website2.com
代码语言:
JavaScript
(
javascript
)
的
上面命令中的标志告诉
mkdir
以创建任何必要的父目录。
2.为每个网站创建测试页面
接下来,为了进行演示,让我们创建一个
index.html
文件在域的文档根目录中,这样我们就可以显示一些内容。
sudo vim/
var
/www/website1.com/index.html
代码语言:
JavaScript
(
javascript
)
粘贴以下行:
<!DOCTYPE
>
<
lang
=
“en”
>
<
头
>
<
元
字符集
=
“utf-8”
>
<
标题
>
欢迎访问网站1!
</
标题
>
</
头
>
<
>
<
>
欢迎访问网站1!
</
>
</
>
</
>
代码语言:
HTML,XML
(
xml
)
现在对website2.com重复上述步骤。
sudo vim/
var
/www/website2.com/index.html
代码语言:
JavaScript
(
javascript
)
粘贴以下行:
<!DOCTYPE
>
<
lang
=
“en”
>
<
头
>
<
元
字符集
=
“utf-8”
>
<
标题
>
欢迎访问网站2!
</
标题
>
</
头
>
<
>
<
>
欢迎访问网站2!
</
>
</
>
</
>
代码语言:
HTML,XML
(
xml
)
3.创建Nginx虚拟主机(服务器块)
要在中创建Nginx虚拟主机文件
可用的站点
目录,执行以下命令:
sudo vim/etc/nginx/sites available/website1.com
值得注意的是,Nginx虚拟主机配置文件可以随意命名,但通常使用域名是个好主意。
现在,将以下内容粘贴到虚拟主机文件中:
服务器
听
80
;
server_name网站1.com www.website1.com;
根
var
/www/website1.com;
access_log/
var
/log/nginx/website1-access.log;
错误日志/
var
/log/nginx/website1-error.log;
}
代码语言:
JavaScript
(
javascript
)
为了使事情更加透明,让我们分解一下这个语法。首先,以下是每个参数的含义:
听
:指定Nginx服务器要侦听连接的端口。
服务器名称
:在这里,我们匹配对我们域的请求。该指令包含我们要用于访问网站的域名列表。
根
:我们存储网站文件的目录的位置。
错误日志
:存储此虚拟主机错误日志的日志文件的完整路径。
access_log
:存储此虚拟主机访问日志的日志文件的完整路径。
现在,我们可以使用初始虚拟主机配置作为第二个文件的基础。只需复制它即可创建一个新文件:
sudo cp/etc/nginx/sites-available/website1.com/etc/nginx/site-available/website2.com
打开新文件并进行调整以匹配我们的第二个文件(
website2.com
)域名:
sudo vim/etc/nginx/sites available/website2.com
服务器
听
80
;
server_name网站2.com www.website2.com;
根
var
/www/website2.com;
access_log/
var
/log/nginx/website2-access.log;
错误日志/
var
/log/nginx/website2-error.log;
}
代码语言:
JavaScript
(
javascript
)
4.启用Nginx虚拟主机(服务器块)
在测试启用虚拟主机之前,我们需要做的最后一件事是。我们可以通过创建一个从文件到
已启用站点
目录:
sudo ln-s/etc/nginx/sites-available/website1.com/etc/nginx/sites enabled/
sudo ln-s/etc/nginx/sites-available/website2.com/etc/nginx/sites enabled/
从下图中可以看到,这些文件现在链接到
已启用站点
目录
在我们继续之前,让我们仔细检查一下是否有任何打字错误。测试Nginx配置的语法是否正确:
sudo nginx-t
最后,如果没有发现任何问题,请重新启动Nginx服务以应用更改:
sudo systemctl重新启动nginx
5.测试虚拟主机(可选)
要测试Nginx虚拟主机,我们首先需要将域名记录指向服务器的IP地址。在我们的案例中,服务器IP地址为
192.168.122.101
.
如果您使用的是Linux,请打开
/etc/主机
使用以下命令在您的台式电脑(您将从中执行测试的电脑)上创建文件:
sudo vim/etc/hosts
并逐个添加虚拟域名,如下所示。
完成后保存并关闭文件。这种方式将允许我们测试我们不拥有的域。
现在打开浏览器并输入
www.website1.com
和
www.website2.com
逐一地。您将分别看到这两个域的索引页。
您已经成功地使用Nginx配置了两个独立的域。
6.禁用Nginx虚拟主机(服务器块)
要禁用Nginx中的虚拟主机,我们必须删除在启用虚拟主机文件时创建的符号链接。例如,要禁用
website2.com
,我们必须执行以下命令:
sudo rm-rf/etc/nginx/sites-enabled/website2.com
要应用这些更改,我们必须重新启动Nginx服务器:
sudo systemctl重新启动nginx
结论
本文向您展示了如何创建Nginx虚拟主机(服务器块)并在单个Linux服务器上托管多个域。要为另一个域创建虚拟主机,请重复相同的步骤。但是,当然,Nginx可以做得更多。
相关:如何通过PHP-FPM配置Nginx以使用PHP
此外,如果您想知道如何使用免费的SSL证书保护您的网站,我建议您阅读我们的指南“如何使用Certbot获得免费的Let's Encrypt SSL证书”
有关设置Nginx服务器的更多信息,您可以参考Nginx官方文档。
感谢阅读!我希望你觉得这篇文章很有帮助,并且你能够设置虚拟主机。如果您有任何问题,请随时留言。
相关推荐
KeePassXC是一款开源密码管理器,以其强大的安全功能和跨平台兼容性而闻名,最近备受关注。这就是它的全部内容。 几天前,一位Ubuntu用户注意到KeePassXC的浏览器集成功能已经消失,导致相应的浏览器扩展无法正常工作。正如您所猜测的,此功能是必不可少的,因为它大大证明了使用此类密码管理器的合理性。 KeePassXC团队的一名成员进行的后续检查显示,Debian开发人员已经从应用程序中删
您的Windows 10或Windows 11安装是否会随着时间的推移而变慢?这不是你想象出来的。随着流行应用程序的硬件要求增加,老化的硬件也会受到影响。 通常,有一个简单的原因:记忆力低下。如果您没有足够的系统内存,则当您尝试运行多个资源密集型程序时,系统会缓慢到爬行。 以下是如何修复Windows 10或Windows 11虚拟内存大小,以消除这些问题。 什么是虚拟内存? 您的计算机有两种类型
您在尝试在Steam上购买新产品时是否遇到错误消息,称您的最后一次购买仍在等待中?弹出窗口有时会警告用户,如果他们购买了新的,Steam可能会取消他们以前的购买,即使他们的银行已经向他们收费。这使情况更加复杂。 这就提出了一个问题:当你收到这个警告时,你应该怎么做?你可以采取什么措施来消除它? 是什么触发了STeam上的待定购买警告? STEAM待定采购错误可以以各种形式出现。以下是当你买东西时,
拱门易于安装。本指南向您展示如何使用GNOME Desktop安装Arch Linux,为成功安装铺平道路。 许多Linux用户想尝试Arch Linux,但Arch很难安装和学习的普遍观念阻止了他们。当人们说这很“难”时,他们的意思是这需要努力。他们是对的——你必须花更多的精力安装你的系统,设置一切,并阅读如何做你想做的事情。 然而,作为对你努力的回报,你最终会得到一个你很了解的系统,并按照你想
只要你有一小部分时间可以消耗,就可以看看这些快速免费的手机游戏,享受一下乐趣。从令人敬畏的街机挑战到令人困惑的谜题,这些游戏将让你保持娱乐。 利用当天的视频 所有游戏在Android和iOS上都是免费的,尽管它们包含可选的应用内购买。 1. iSlash英雄 关 磨好你的刀刃,为iSlash Heroes做准备。你的目标是将木板的碎片划开,直到仪表到达红丝带。诀窍是要小心弹跳的忍者之星,因为如果你
回到顶部