Nginx 虚拟主机配置的三种方式(基于域名)

yizhihongxing

下面是“Nginx 虚拟主机配置的三种方式(基于域名)”的完整攻略。

1. 背景介绍

当一个 Nginx 服务器需要托管多个网站时,我们需要为每个网站配置虚拟主机。在基于域名的虚拟主机配置中,不同域名的请求将被指向到不同的网站。本文将介绍 Nginx 虚拟主机配置的三种方式。

2. 步骤

2.1 方式一:基于 server_name 直接匹配域名

server {
    listen       80;
    server_name  example.com www.example.com;
    root /usr/share/nginx/html/example.com;
    index index.html;
}

代码说明:

  • server_name 指令用于指定虚拟主机对应的域名,可以指定多个域名。
  • root 指令用于指定该虚拟主机的网站根目录。
  • index 指令用于指定默认显示的文件名,这里表示默认显示 index.html 文件。

2.2 方式二:基于正则表达式匹配域名

server {
    listen       80;
    server_name ~^(?<subdomain>.+)\.example\.com$;
    root /usr/share/nginx/html/$subdomain;
    index index.html;
}

代码说明:

  • ~ 符号用于表示后面字符串为正则表达式。
  • (?<subdomain>.+) 表示匹配子域名,并将其保存在名为 subdomain 的变量中。
  • example\.com$ 表示匹配以 example.com 结尾的域名。
  • rootindex 指令的含义同方式一。

举例:

如果我们访问 sub.example.com,这个请求将会被匹配并且 sub 将会作为变量保存,然后 Nginx 会将请求映射到 /usr/share/nginx/html/sub 目录。

2.3 方式三:基于 map 指令匹配域名

map $http_host $root {
    default /usr/share/nginx/html;
    ~^(?<subdomain>.+)\.example\.com$ /usr/share/nginx/html/$subdomain;
}
server {
    listen       80;
    server_name  example.com *.example.com;
    root $root;
    index index.html;
}

代码说明:

  • map 指令用于创建一个变量映射表。
  • default 表示默认值。
  • ~ 符号和后面的正则表达式同方式二。
  • $http_host 表示 HTTP 请求头中的 Host 字段,也就是访问的域名。
  • *.example.com 表示所有以 example.com 结尾的二级域名都将匹配。

举例:

如果我们访问 sub.example.com,首先 Nginx 会根据 map 映射表得到 /usr/share/nginx/html/sub,然后将请求映射到该目录。

3. 总结

以上是基于域名的 Nginx 虚拟主机配置的三种方式。这些方式涉及了不同的知识点,理解和灵活运用它们可以帮助您更好地管理您的网站。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx 虚拟主机配置的三种方式(基于域名) - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 一条命令重启所有已停止的docker容器操作

    要重启所有已停止的 Docker 容器,可以使用以下命令: docker container start $(docker container ls -aq) 该命令的原理是使用 docker container ls -aq 列出所有容器的 ID,包括已停止的。然后再使用 docker container start 命令将其全部启动。这种方式的好处在于,…

    other 2023年6月27日
    00
  • mybatisbind标签

    mybatisbind标签 在使用MyBatis的过程中,我们可能会遇到一些复杂的 SQL 语句需要使用动态 SQL 进行拼接。MyBatis 提供了很多动态 SQL 标签来实现 SQL 拼接,其中一个比较常用的标签就是 bind 标签。 概述 bind 标签的作用是将 OGNL 表达式计算后的结果绑定到一个变量上,该变量可以在 SQL 中引用。通过bind…

    其他 2023年3月28日
    00
  • 浅析CSS中的4种引入方式及优先级

    浅析CSS中的4种引入方式及优先级 引入方式 在CSS中,我们可以使用四种不同的方式来引入样式表,分别是行内样式、内部样式表、外部样式表和导入样式表。 1. 行内样式 行内样式是将CSS样式直接写在HTML元素的style属性中。它的优先级最高,会覆盖其他方式中的样式。 示例: <div style="color: red;"&gt…

    other 2023年6月28日
    00
  • linux centos 修改ip地址细节介绍

    Linux CentOS 修改IP地址攻略 在Linux CentOS系统中,修改IP地址可以通过编辑网络配置文件来实现。下面是详细的攻略步骤: 打开终端,以root用户身份登录。 进入网络配置文件目录,使用以下命令: cd /etc/sysconfig/network-scripts/ 查看当前网络配置文件,找到需要修改的网络接口文件,一般以ifcfg-开…

    other 2023年7月30日
    00
  • Windows Powershell 快捷键介绍

    Windows Powershell 快捷键介绍 Powershell 是 Windows 操作系统自带的一种命令行终端,使用快捷键可以大大提高我们的操作效率。本文将介绍 Powershell 中常用的快捷键,帮助你更快、更有效地完成工作。 常用快捷键 下面是 Powershell 中常用的快捷键及功能说明: Ctrl+C:终止当前正在运行的命令(类似于 L…

    other 2023年6月26日
    00
  • .NET 线程基础的使用介绍

    .NET 线程基础的使用介绍 线程基本概念 在计算机中,线程(Thread)是指程序执行流的最小单元,它是进程(Process)的一个子集,是操作系统分配处理器时间的基本单位。在 .NET 中,线程是由 System.Threading.Thread 类代表的。 创建线程 在 .NET 中,创建一个新线程的基本方法是实例化 Thread 类并指定一个方法来启…

    other 2023年6月27日
    00
  • js 判断附件后缀的简单实现方法

    当我们需要在JavaScript中判断附件的后缀时,可以使用以下简单的实现方法: 使用字符串的split()方法和数组的pop()方法来获取文件名的后缀。 // 示例1:判断文件名为\"example.txt\"的后缀 const fileName = \"example.txt\"; const fileExtens…

    other 2023年8月5日
    00
  • winebottlerformac(mac运行exe程序工具)安装

    以下是关于“WineBottler for Mac安装”的完整攻略,包括WineBottler的基本知识、安装步骤和两个示例等。 WineBottler的基本知识 WineBottler是一款Mac上的应用程序,它可以让你在Mac上运行Windows应用程序。它使用Wine技术来实现这一功能,Wine是一种允许在Unix-like操作系统上运行Windows…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部