技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

nginx.conf location 修饰符解释及示例详解

作者:admin    时间:2022-9-6 19:39:51    浏览:

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

nginx.conf location 修饰符解释及示例详解

NGINX location 指令语法

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

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

location 块中的修饰符是可选的。在 location 块中有一个修饰符将允许 NGINX 以不同的方式处理 URL。几个最常见的修饰符是:

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

NGINX 如何选择 location 块

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

  • NGINX 首先寻找与 location = /some/path/ 指定的完全匹配,如果找到匹配,则立即提供此块。
  • 如果没有这样的精确 location 块,则 NGINX 继续匹配最长的非精确前缀,如果在使用 ^~ 修饰符的 location 找到匹配项,则 NGINX 将停止进一步搜索并选择此 location 块来服务请求。
  • 如果匹配的最长前缀 location 不包含 ^~ 修饰符,则临时存储匹配并继续执行以下步骤。
  • NGINX 现在将搜索转移到包含 ~~* 修饰符的 location 块,并选择与请求 URI 匹配的第一个 location 块,并立即选择为请求提供服务。
  • 如果在上述步骤中没有找到可以与请求的 URI 匹配的 location,则使用先前存储的前缀 location 来为请求提供服务。

NGINX location 块示例

让我们列出几个使用修饰符和 URI 的 NGINX location 块示例。

1、匹配所有请求的NGINX位置

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

location / {
    ...
}

2、NGINX 位置匹配准确的 URL

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

location = /images { 
    ...
}

上面的 location 块将与 URL https://domain.com/images 匹配,但 URL https://domain.com/images/index.htmlhttps://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 位置 RegEx 区分大小写匹配

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

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

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

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

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

总结

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

相关文章

标签: nginx  location  
x
  • 站长推荐
/* 左侧显示文章内容目录 */