Nginx 位置指令示例

2023-11-08

NGINX 服务器块中的位置指令允许将请求路由到文件系统中的正确位置。该指令用于告诉 NGINX 在哪里查找资源,方法是在将位置块与 URL 进行匹配时包含文件和文件夹。在本教程中,我们将详细了解 NGINX 位置指令。

先决条件

  • 您已经按照我们的教程安装了 NGINXhere.

NGINX 位置指令语法

NGINX 位置块可以放置在服务器块内,也可以放置在另一个位置块内,但有一些限制。构造位置块的语法是:

location [modifier] [URI] {
  ...
  ...
}

位置块中的修饰符是可选的。在位置块中添加修饰符将允许 NGINX 以不同的方式处理 URL。最常见的修饰符有:

  • none:如果位置块中没有修饰符,则请求的 URI 将与请求的 URI 的开头进行匹配。
  • =:等号用于将位置块与请求的 URI 精确匹配。
  • ~:波形符用于与请求的 URI 进行区分大小写的正则表达式匹配。
  • ~*:波浪号后跟星号用于与请求的 URI 进行不区分大小写的正则表达式匹配。
  • ^~:克拉后跟波形符用于对请求的 URI 执行最长的非正则表达式匹配。如果请求的 URI 命中这样的位置块,则不会进行进一步的匹配。

NGINX 如何选择位置块

可以使用前缀字符串或正则表达式来定义位置。不区分大小写的正则表达式用前面的“指定”~*” 修饰符,对于不区分大小写的正则表达式,“~使用了“修饰符。为了找到 URI 的位置匹配,NGINX 首先扫描使用前缀字符串(不带正则表达式)定义的位置。此后,按照正则表达式在配置文件中声明的顺序检查正则表达式的位置。 NGINX 将执行以下步骤来根据请求的 URI 选择位置块。

  • NGINX 首先寻找指定的精确匹配location = /some/path/如果找到匹配,则立即提供该块。
  • 如果没有这样的精确位置块,那么 NGINX 继续匹配最长的非精确前缀,如果在使用 ^~ 修饰符的地方找到匹配项,那么 NGINX 将停止进一步搜索,并选择该位置块来服务请求。
  • If the matched longest prefix location does not contain ^~ modifier then the match is stored temporarily and proceed with following steps.
    • NGINX 现在将搜索转移到包含 ~ 和 ~* 修饰符的位置块,并选择与请求 URI 匹配的第一个位置块,并立即选择为请求提供服务。
    • 如果在上述步骤中没有找到可以与请求的 URI 匹配的位置,则使用先前存储的前缀位置来服务该请求。

NGINX 位置块示例

让我们列出一些使用修饰符和 URI 的 NGINX 位置块的示例。

1.NGINX位置匹配所有请求

在以下示例中,前缀位置 / 将匹配所有请求,但如果未找到匹配项,则将用作最后的手段。

location / {
    ...
}

2. NGINX 位置与精确 URL 匹配

NGINX 总是首先尝试匹配最具体的前缀位置。因此,以下位置块中的等号强制与请求的路径精确匹配,然后停止搜索任何更多匹配项。

location = /images { 
    ...
}

上面的位置块将与 URL 匹配https://domain.com/images但网址https://domain.com/images/index.html or https://domain.com/images/将不会被匹配。

3. NGINX 目录位置块

以下位置块将匹配以 /images/ 开头的任何请求,但继续搜索所请求的 URI 的更具体的块。因此,如果 NGINX 没有找到任何更具体的匹配,将选择位置块。

location /images/ {
     ...
     ...
}

4. NGINX 位置正则表达式示例

修饰符^~以下位置块中的结果会导致区分大小写的正则表达式匹配。因此,URI /images 或 /images/logo.png 将被匹配,但一旦找到匹配项就会停止搜索。

location ^~ /images {
   ...
   ...
}

5. image/css/js 文件类型的 NGINX 位置块

修饰符~*下一个位置块匹配任何以 png、ico、gif、jpg、jpeg、css 或 js 结尾的请求(不区分大小写)。然而,任何向/images/文件夹将由先前的位置块提供服务。

location ~* .(png|ico|gif|jpg|jpeg|css|js)$ {
    ...
    ...
}

6.NGINX位置正则表达式区分大小写匹配

修饰符~以下位置块中的结果会导致区分大小写的正则表达式匹配,但不会停止搜索更好的匹配。

location ~ /images {
    ...
    ...
}

7.NGINX位置正则表达式不区分大小写匹配示例

修饰符~*以下位置块中的结果是不区分大小写的正则表达式匹配,但搜索不会在此停止以获得更好的匹配。

location ~* /images {
     ...
     ...
}

Summary

了解 NGINX 位置指令对于跟踪文件系统中请求的 URI 的端点至关重要。本文讨论的修饰符、选择位置块的步骤以及一些示例将帮助您轻松开始使用 NGINX 中的位置块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx 位置指令示例 的相关文章

随机推荐

  • 如何在 JavaScript 中使用 Switch 语句

    介绍 条件语句是所有编程语言中最有用和最常见的功能之一 如何在 JavaScript 中编写条件语句描述了如何使用if else and else if关键字根据不同的条件控制程序的流程 在 JavaScript 中通常是用户输入的结果 此
  • 如何生成带校验和的资源标识符

    作者选择了免费开源基金接受捐赠作为为捐款而写程序 介绍 唯一标识符 UID 或身份标识 可以是字符串值或整数 API 开发人员经常使用它们来寻址 API 中的唯一资源 然后 API 使用者使用这些标识符从资源集合中获取单个资源 如果没有唯一
  • 如何在 Debian 11 上安装和使用 Composer

    介绍 Composer是一个流行的 PHP 依赖管理工具 创建主要是为了方便项目依赖的安装和更新 Composer 的工作原理是检查特定项目所依赖的其他软件包 然后根据项目需求使用适当的版本为您安装它们 Composer 还常用于引导基于流
  • 如何编写您的第一个 Ruby 程序

    介绍 你好 世界 程序是计算机编程中经典且历史悠久的传统 对于初学者来说 这是一个小而完整的第一个程序 并且是确保正确配置环境的好方法 本教程将引导您完成用 Ruby 创建该程序 但是 为了使程序更有趣 您将修改传统的 Hello Worl
  • Java 中的矩阵程序

    矩阵是一个矩形数组 元素按行和列排列 在本教程中 我们将了解一些 Java 矩阵程序 矩阵的图形表示 Matrix Java 中的矩阵 我们可以使用矩阵来实现Java中的二维数组 可以使用索引 array r c 访问行 r 和列 c 的元
  • 什么是平衡二叉树以及如何检查它?

    对于二叉树 如果树是倾斜的 那么执行操作时计算效率就会降低 这就是确保树木不倾斜的动机 因此需要平衡二叉树 什么是平衡二叉树 平衡二叉树在计算上执行操作是高效的 平衡二叉树将遵循以下条件 任意节点左右子树高度差的绝对值小于1 对于每个节点
  • Java 15 特性

    保持六个月周期的传统 发布后Java 142020 年 3 月 17 日 我们现在有了 Java 15 下一个非 LTS 版本将于 2020 年 9 月 15 日推出 Java 15 特性 下面快速浏览一下 Java 15 的功能 密封课程
  • 如何在 Debian 11 上设置 NFS 挂载

    介绍 NFS 网络文件系统 是一种分布式文件系统协议 允许您在服务器上挂载远程目录 这允许您管理不同位置的存储空间并从多个客户端写入该空间 NFS 提供了一种相对标准且高性能的方式来通过网络访问远程系统 并且在必须定期访问共享资源的情况下运
  • Log4j 级别示例 - 顺序、优先级、自定义过滤器

    如果您使用过 log4j 您会注意到有很多方法来记录消息 例如 logger trace My Log message logger debug My Log message logger info My Log message 实际上它们
  • 如何在 Ubuntu 12.04 LTS 上设置 Apache 虚拟主机

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • json-简单示例

    json simple 是一个简单的 JSON java 工具包 json simple 库完全符合 JSON 规范 RFC4627 json 简单 json simple uses Map and List internally for
  • 如何在R中使用sample()获取样本?

    让我们了解 R 中最常用的函数之一 sample 在数据分析中 对数据进行采样是分析师最常见的过程 要研究和理解数据 有时采样是最好的方法 对于大数据来说尤其如此 R 提供标准函数sample 来从数据集中获取样本 许多业务和数据分析问题都
  • 如何在 Ubuntu 16.04 上使用 Webmin、LAMP、BIND 和 PostFix 安装 Virtualmin

    介绍 Webmin是一个 Web 前端 允许您通过浏览器远程管理服务器 虚拟分钟是Webmin的一个插件 可以通过单个界面简化多个虚拟主机的管理 类似于cPanel or Plesk 使用 Virtualmin 您可以管理用户帐户 Apac
  • Python等待时间,等待用户输入

    有时我们希望 python 程序在执行下一步之前等待特定的时间 我们可以用时间模块 sleep 函数将我们的程序暂停指定的秒数 Python等待时间 让我们看一个简单的示例 在执行进一步的语句之前 我们将暂停程序 5 秒钟 import t
  • Java 队列 – Java 中的队列

    Java Queue is an interface available in java util package and extends java util Collection interface Just like Java List
  • Python 小数 - 除法、舍入、精度

    Python 小数模块帮助我们以适当的精度进行除法和四舍五入numbers Python 十进制模块 In this lesson on decimal module in Python we will see how we can man
  • Java 字符串中最长的回文子串

    字符串中最长的回文子串是很常见的java面试题 找出最长的回文数String 首先 我们需要确定这样做的逻辑 字符串算法中的最长回文子串 这里的关键点是 从任何回文串的中间开始 如果我们向右和向左移动 1 个位置 它总是相同的字符 例如12
  • 理解 Python 3 中的字典

    介绍 The 字典是Python内置的mapping类型 词典地图keys to values这些键值对提供了一种在 Python 中存储数据的有用方法 字典通常用于保存相关数据 例如 ID 或用户配置文件中包含的信息 字典的两侧都带有花括
  • 如何使用 cd、pwd 和 ls 探索 Linux 服务器上的文件系统

    介绍 熟悉命令行是利用 Linux 服务器平台强大功能的第一步 这也是您可能希望在此环境中执行的基本上所有与服务器相关的活动的基本先决条件 虽然许多工具都存在图形替代方案 但学习命令行是一项技能 可以让您以大多数 GUI 图形用户界面 无法
  • Nginx 位置指令示例

    NGINX 服务器块中的位置指令允许将请求路由到文件系统中的正确位置 该指令用于告诉 NGINX 在哪里查找资源 方法是在将位置块与 URL 进行匹配时包含文件和文件夹 在本教程中 我们将详细了解 NGINX 位置指令 先决条件 您已经按照