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官方文档。
感谢阅读!我希望你觉得这篇文章很有帮助,并且你能够设置虚拟主机。如果您有任何问题,请随时留言。
相关推荐
视频是分享记忆和想法的绝佳方式,甚至可以通过YouTube等平台上的广告和赞助来赚钱。然而,为了让你的视频更有吸引力和吸引力,你需要对它们进行编辑,这在移动设备上可能是棘手的。AI视频编辑可以简化这项任务。 AI视频编辑器自动编辑,使创建令人印象深刻的视频变得更容易、更快。多亏了最新的人工智能视频编辑器,以前耗时的任务,如降噪和背景去除,现在只需点击几下就可以完成。 1.菲尔莫拉 密切 Filmo
如今,保护你的网站不仅仅是一种建议,也是一种必要。这就是SSL证书发挥作用的地方。它们对用户浏览器和网站之间传输的数据进行加密,确保隐私和安全。 在可用于获得SSL证书的各种选项中,ZeroSSL是首选之一,尤其是对于那些寻找免费可靠解决方案的人来说。 本文深入探讨了如何使用ZeroSSL的免费SSL证书来保护您的网站。 ZeroSSL:快速概述 ZeroSSL是一个免费、自动化、开放的证书颁发机
Windows包括一些选项,可帮助您配置PC的电源和睡眠设置。默认情况下,Windows将在一段时间不活动后进入睡眠状态。但如果你想让你的电脑保持更长时间的清醒呢? 1.使用PowerToys让您的电脑清醒 Microsoft PowerToys是一系列高级工具,可让您在Windows 10和11系统上做更多事情。它的唤醒功能可以让您随时保持PC唤醒,无论是暂时还是无限期。要防止Windows在程
2024年6月30日,CentOS 7将进入生命终结期(EOL)。在此日期之后,操作系统将不再接收安全更新或维护支持。从本质上讲,经过多年可靠的服务,CentOS 7将从服务器平台阵容中退役。 既然您已经登录到这里,您更喜欢将Oracle Linux作为您的CentOS 7系统的升级路径。祝贺你的选择!这是一个非常可靠的服务器平台,来自一个不言自明的品牌。 我们还为另外两个企业Linux发行版Al
您的Raspberry Pi所需的安全级别在很大程度上取决于您计划如何使用它。例如,当您的Ras树莓派连接到互联网时,您应该采取最低的安全措施,以确保只有您需要打开的端口才是打开的! 防火墙是一种监视传入和传出网络流量的软件。然后,它可以允许、拒绝或丢弃流量。 您的Raspberry Pi功能正常,无需防火墙即可连接,但有了只允许您允许的流量类型的防火墙,它可以变得更安全 在Raspberry P
回到顶部