如何创建Nginx虚拟主机(服务器块)

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
)