如何用虚拟主机建造多个域名服务器
一休软件库9月25日消息,服务器块,在Nginx中通常称为虚拟主机,允许您在一台服务器上托管多个网站。这篇文章将教你如何运用它们。
NGX设计用于在单个服务器和IP地址上处置多个域。换句话说,假如您有一台用作Web服务器的服务器,并且它只要一个分配的IP地址,那么为了在服务器上运转多个网站或域,您可以运用Nginx虚拟主机。
在开端本教程之前,您需求装置Nginx。
什么是虚拟主机?这是一个Apache HTTP服务器术语。不过Nginx用户常常用。现实上,Nginx的正确术语是服务器块。
虚拟主机是一种在单个服务器上托管多个域名的办法。
虚拟主机是如何任务的?当您在服务器上启动相似Nginx的Web服务器软件时,Web服务器会将本身绑定到一个或多个网络端口,这些端口通常用于端口80和443的Web服务器。
如今,当计算机拜访一个网站时,它会经过互联网向服务器发送恳求,服务器会接纳恳求。服务器应该做的第一件事是反省恳求发送到目的端口的端口。
接上去,它将运用这个目的端口来确定将这个信息转发给哪个使用程序,这意味着您的Web服务器只能有一个接纳恳求的使用程序。
但是假如你想在同一个服务器上托管两个不同的网站呢?
服务器需求可以判别数据包何时进入收回恳求的网站,并且需求晓得正在恳求哪个网站,以便晓得要发回什么信息。
无论恳求哪个网站,服务器都不能只运用端口号和目的端口来确定客户端尝试拜访哪个网站。服务器要做的就是说“我想把这个恳求发送给Nginx”,然后Nginx必需决议它想从那里发回什么。
Nginx有一个概念叫做服务器块。服务器块实践上可以用于两种不同的用处。它们可以依据恳求的IP地址为不同的网站提供服务,也可以依据正在运用的域名为不同的网站提供服务。
因而,当你输出一个网站称号,www.example.com,当服务器接纳到该称号时,Nginx实践上可以检查恳求的服务器称号的HTTP头外部,然后依据其配置的虚拟主机决议存储哪个目录网站文件,并依据服务器称号向客户端前往正确的呼应。
如何创立Nginx虚拟主机(服务器块)我们可以在两个目录下创立和存储我们的虚拟主机配置文件,这两个目录都位于/etc/nginx目录下。这两个目录的称号是站点可用和站点启用。
/etc/nginx/sites-available:定义单个虚拟主机(网站)的目录。记住,Nginx不会运用这个目录中的配置文件,除非它们链接到这个/etc/nginx/sites-enabled目录。/etc/Nginx/sites-enabled:Nginx自动提供的虚拟主机(网站)列表。你例如想晓得为什么我们需求两个目录来存储我们的虚拟主机文件?
这样做的次要益处是,我们可以在Nginx服务器上创立许多虚拟主机文件,但我们可以依据本身的需求启用它们。
如今,我们将在Nginx服务器中创立一个虚拟主机文件来托管多个具有多个域的站点,域名是website1.com和website2.com。
1.创立目录构造我们要做的第一件事就是为每个虚拟主机创立一个目录,用来存储不同的网站内容。我们将这些目录放在/var/www中,并以每个域名命名。
运转以下命令创立目录:
sudo mkdir-p/var/www/website 1 . com sudo mkdir-p/var/www/website 2 . com
Nginx虚拟主机目录构造
-p上述命令中的标志通知mkdir在这个进程中创立任何必要的父目录。
2.为每个网站创立一个测试页面。接上去,出于演示目的,让我们index.html在域的文档根目录中创立一个文件,以便我们可以显示一些内容。
sudo vim/var/www/website 1 . com/index . html 粘贴以下行:
& lt!DOCTYPE html & gt& lthtml lang = " en " & gt& lthead & gt& ltmeta charset="utf-8 " >& lttitle & gt欢送离开网站1!& lt/title & gt; & lt/head & gt; & ltbody & gt& lth1 & gt欢送离开网站1!& lt/h1 & gt; & lt/body & gt; & lt/html & gt; 如今对website2.com反复上述步骤。
sudo vim/var/www/website 2 . com/index . html 粘贴以下行:
& lt!DOCTYPE html & gt& lthtml lang = " en " & gt& lthead & gt& ltmeta charset="utf-8 " >& lttitle & gt欢送离开网站2!& lt/title & gt; & lt/head & gt; & ltbody & gt& lth1 & gt欢送离开网站2!& lt/h1 & gt; & lt/body & gt; & lt/html & gt; 3.创立Nginx虚拟主机(服务器块)要在站点可用目录中创立Nginx虚拟主机文件,请执行以下命令:
sudo vim/etc/nginx/sites-available/website 1 . com 需求留意的是,Nginx虚拟主机配置文件可以恣意命名,但是通常状况下,运用域名是一个很好的习气。
如今,将以下内容粘贴到您的虚拟主机文件中:
服务器{ 听80; website1.com·www.website1.com; root/var/www/website 1 . com; access _ log/var/log/nginx/website 1-access . log; error _ log/var/log/nginx/website 1-error . log; } 为了让事情更清楚,我们来分解一下这个语法。以下是每个参数的含义:
Listen:指定Nginx服务器监听衔接的端口。Server_name:在这里,我们为我们的域婚配恳求。本指令包括一个域名列表,我们将运用该列表拜访我们的网站。Root:我们存储网站文件的目录的地位。Error_log:日志文件的完好途径,我们在该文件中存储该虚拟主机的一切错误日志。Access_log:日志文件的完好途径,我们在其中存储这个虚拟主机的一切拜访日志。如今,我们可以运用初始虚拟主机配置作为第二个文件的根底,只需复制它来创立一个新文件:
sudo CP/etc/nginx/sites-available/website 1 . com/etc/nginx/sites-available/website 2 . com 翻开一个新文件,调整它以婚配我们的第二个(website2.com)域名:
sudo vim/etc/nginx/sites-available/website 2 . com 服务器{ 听80; website2.com·www.website2.com; root/var/www/website 2 . com; access _ log/var/log/nginx/website 2-access . log; error _ log/var/log/nginx/website 2-error . log; } 4.启用Nginx虚拟主机(服务器块)测试前我们需求做的最初一件事就是启用虚拟主机。我们可以经过创立从文件到启用站点的目录的符号链接来做到这一点:
sudo ln-s/etc/nginx/sites-available/website 1 . com/etc/nginx/sites-enabled/ sudo ln-s/etc/nginx/sites-available/website 2 . com/etc/nginx/sites-enabled/ 如下图所示,这些文件如今链接到启用站点的目录。
将Nginx配置文件链接到启用站点的目录。
在我们持续之前,让我们细心反省一下能否有错别字。测试Nginx配置的正确语法:
sudo nginx -t 最初,假如没有发现成绩,重启Nginx服务以使用更改:
sudo systemctl重启nginx 5.测试虚拟主机(可选)为了测试Nginx虚拟主机,我们首先需求将我们的域名记载指向服务器的IP地址。在我们的示例中,服务器的IP地址是192.168.122.101。
假如您运用的是Linux,请运用以下命令在您的桌面计算机(您将执行测试的计算机)上翻开这个/etc/hosts文件:
sudo vim /etc/hosts 如下图,逐一添加虚拟域名。
完成后保管并封闭文件。这样做将允许我们测试我们实践上并不拥有的域名。
如今翻开阅读器www.website1.com和www.website2.com,并逐一输出。您将辨别看到两个域的索引页面。
您曾经运用Nginx成功配置了两个独立的域。
6.禁用Nginx虚拟主机(服务器块)。要在Nginx中禁用虚拟主机,我们只需求删除在启用虚拟主机文件时创立的符号链接。例如,要禁用website2.com,我们只需执行以下命令:
sudo RM-RF/etc/nginx/sites-enabled/website 2 . com 要使用这些更改,我们必需重启Nginx服务器:
sudo systemctl重启nginx 结论在本文中,我们将引见如何在一台Linux服务器上创立一个Nginx虚拟主机(服务器块)并托管多个域。要为另一个域创立虚拟主机,只需反复相反的步骤。