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官方文档。
感谢阅读!我希望你觉得这篇文章很有帮助,并且你能够设置虚拟主机。如果您有任何问题,请随时留言。
在首次引入 Windows 大约 41 年后,记事本终于更新了自动更正和拼写检查功能。这家科技巨头于今年 3 月推出了拼...
大鱼 2024 年 7 月 9 日
在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面。apt和apt-get是两...
大鱼 2024 年 6 月 26 日
远程桌面是一种允许您远程接管和使用另一台计算机的服务。在Ubuntu中,可以在图形客户端机器上启用它来控制主机。此功能对...
大鱼 2024 年 5 月 7 日
利用当天的视频 苹果2024年5月的“放开”活动标志着iPad系列的一个重要里程碑,该公司推出了自成立以来最重大的升级。...
大鱼 2024 年 5 月 19 日
已升级到新iPhone,是否要从旧设备中移动所有照片?或者你只是想从别人的iPhone上转移照片?以下是在两部iPhon...
大鱼 2024 年 5 月 19 日