前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux中创建Nginx虚拟主机

linux中创建Nginx虚拟主机

作者头像
入门笔记
发布2022-06-02 17:09:03
1.9K0
发布2022-06-02 17:09:03
举报
文章被收录于专栏:入门小站

什么是虚拟主机?

如果你不确定虚拟主机是什么,让我解释一下。这是一个Apache HTTP Server 术语,然而,Nginx 用户也经常使用它。事实上,Nginx 的正确术语是 server block

虚拟主机是一种在单个服务器上托管多个域名的方法。

虚拟主机如何工作?

当你在服务器上启动像 Nginx 这样的 Web 服务器软件时,该 Web 服务器将自己绑定到一个或多个网络端口。通常用于将成为端口 80 和 443 的 Web 服务器。

现在,当计算机访问网站时,它将通过 Internet 向服务器发送请求,服务器将接收该请求。服务器要做的第一件事是查看请求发送到目标端口的端口。

接下来,它将使用该目标端口来确定将该信息转发到哪个应用程序。这意味着你的 Web 服务器只能有一个接收请求的应用程序。

但是,如果你想在同一 Web 服务器上托管两个不同的网站怎么办?服务器需要能够判断数据包何时进入请求网站。它需要能够知道正在请求哪个网站,以便知道要发回哪些信息。

无论请求哪个网站,服务器都不能仅使用端口号和目标端口来确定客户端尝试访问哪个网站。服务器要做的就是说我要向 Nginx 发送这个请求,然后 Nginx 必须从那里决定它要发回什么。

Nginx 有一个叫做server blocks的概念。服务器块实际上可以用于两种不同的事情。它们可用于根据请求的 IP 地址为不同的网站提供服务,也可用于根据正在使用的域名为不同的网站提供服务。

  • Nginx 虚拟主机是如何工作的

因此,当你输入网站名称时www.example.com,当服务器收到该名称时,Nginx 实际上可以查看请求的服务器名称的 HTTP 标头内部,然后根据其配置的虚拟主机,决定存储哪个目录网站文件,并根据服务器名称将正确的响应返回给客户端。

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

我们可以在两个目录中创建和存储我们的虚拟主机配置文件。它们都位于/etc/nginx目录中。这两个目录的名称是sites-availablesites-enabled

代码语言:javascript
复制
/etc/nginx/sites-available

定义单个虚拟主机(网站)的目录。请记住,Nginx 不会使用在此目录中找到的配置文件,除非它们链接到该 /etc/nginx/sites-enabled目录。

代码语言:javascript
复制
/etc/nginx/sites-enabled

由 Nginx 主动提供服务的虚拟主机(网站)列表。

你可能想知道为什么我们需要两个目录来存储我们的虚拟主机文件?这样做的主要好处是我们可以在 Nginx 服务器上创建许多虚拟主机文件,但我们可以根据我们的要求启用它们。

现在,我们将创建虚拟主机文件以在 Nginx 服务器中托管具有多个域的多个站点。域名为 rumenz.comtooltt.com

1. 创建目录结构

我们需要做的第一件事是为每个虚拟主机创建一个目录来存储不同的网站内容。我们将这些目录放在其中 /var/www ,并以每个域名命名。

运行以下命令来创建目录:

代码语言:javascript
复制
sudo mkdir -p /var/www/rumenz
sudo mkdir -p /var/www/tooltt

-p 上面命令中的 标志告诉 mkdir 在此过程中创建任何必要的父目录。

2. 为每个网站创建测试页面

接下来,出于演示目的,让我们index.html 在域的文档根目录中创建一个 文件,以便我们可以显示一些内容。

代码语言:javascript
复制
sudo vim /var/www/rumenz/index.html
代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 1!</title>
    </head>
    <body>
        <h1>入门小站!</h1>
    </body>
</html>

现在对 tooltt.com 重复上述步骤。

代码语言:javascript
复制
sudo vim /var/www/tooltt/index.html
代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 2!</title>
    </head>
    <body>
        <h1>tooltt.com!</h1>
    </body>
</html>

3.创建Nginx虚拟主机(Server Block)

要在sites-available目录中创建 Nginx 虚拟主机文件,请执行以下命令:

代码语言:javascript
复制
sudo vim /etc/nginx/sites-available/rumenz.conf

需要注意的是,Nginx 虚拟主机配置文件可以任意命名,但通常情况下,使用域名是一个好习惯。

现在,将以下内容粘贴到你的虚拟主机文件中:

代码语言:javascript
复制
server {
    listen 80;
    server_name  www.rumenz.com;
    root /var/www/rumenz;
    access_log /var/log/nginx/rumenz-access.log;
    error_log /var/log/nginx/rumenz-error.log;
}

为了让事情更清楚,让我们分解这个语法。以下是每个参数的含义:

  • listen: 指定 Nginx 服务器在哪个端口上侦听连接。
  • server_name: 在这里,我们匹配对我们域的请求。该指令包含我们要用于访问我们网站的域名列表。
  • root:我们存储网站文件的目录的位置。
  • error_log:我们存储此虚拟主机的所有错误日志的日志文件的完整路径。
  • access_log:我们存储此虚拟主机的所有访问日志的日志文件的完整路径。

现在我们可以使用我们的初始虚拟主机配置作为我们第二个文件的基础。只需复制它以创建一个新文件:

代码语言:javascript
复制
sudo cp /etc/nginx/sites-available/rumenz.conf /etc/nginx/sites-available/tooltt.conf

打开新文件并调整它以匹配我们的第二个 ( tooltt.com) 域名:

代码语言:javascript
复制
sudo vim /etc/nginx/sites-available/tooltt.conf
代码语言:javascript
复制
server {
    listen 80;
    server_name  www.tooltt,com;
    root /var/www/tooltt;
    access_log /var/log/nginx/tooltt-access.log;
    error_log /var/log/nginx/tooltt-error.log;
}

4. 启用 Nginx 虚拟主机(服务器块)

在测试之前我们需要做的最后一件事是启用虚拟主机。我们可以通过创建从文件到sites-enabled 目录的符号链接来做到这一点 :

代码语言:javascript
复制
sudo ln -s /etc/nginx/sites-available/rumenz.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/tooltt.conf /etc/nginx/sites-enabled/

如下图所示,这些文件现在已链接到sites-enabled目录中。

将 Nginx 配置文件链接到启用站点的目录中

在我们继续之前,让我们仔细检查一下是否有任何错别字。测试 Nginx 配置的正确语法:

代码语言:javascript
复制
sudo nginx -t

最后,如果没有发现问题,重启Nginx

代码语言:javascript
复制
sudo systemctl restart nginx

5. 测试虚拟主机(可选)

为了测试 Nginx 虚拟主机,我们首先需要将我们的域名记录指向服务器的 IP 地址。在我们的例子中,服务器 IP 地址是192.168.122.101.

编辑/etc/hosts 文件

代码语言:javascript
复制
vim /etc/hosts
192.168.122.101 rumenz.com
192.168.122.101 tooltt.com

完成后保存并关闭文件。以这种方式进行将允许我们测试我们实际上并不拥有的域。

现在打开浏览器输入www.rumenz.comwww.tooltt.com。你将分别看到两个域的索引页面。

6. 禁用 Nginx 虚拟主机

要在 Nginx 中禁用虚拟主机,我们只需要删除我们在启用虚拟主机文件时创建的符号链接。例如,要禁用tooltt.com,我们只需要执行以下命令:

代码语言:javascript
复制
sudo rm -rf /etc/nginx/sites-enabled/tooltt.conf

要应用更改,我们必须重新启动 Nginx 服务器:

代码语言:javascript
复制
sudo systemctl restart nginx
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是虚拟主机?
  • 虚拟主机如何工作?
  • 如何创建 Nginx 虚拟主机(服务器块)
  • 1. 创建目录结构
  • 2. 为每个网站创建测试页面
  • 3.创建Nginx虚拟主机(Server Block)
  • 4. 启用 Nginx 虚拟主机(服务器块)
  • 5. 测试虚拟主机(可选)
  • 6. 禁用 Nginx 虚拟主机
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档