Nginx 指令之location

Nginx 指令之location

指令:

  • 语法规则: `location [=|~|~*|^~] /uri/ { … }``
  • 规则解释:

    = 表示精确匹配
    ^~ 表示uri以某个常规字符串开头,理解为匹配 url路径即可。
    ~ 表示区分大小写的正则匹配
    ~* 表示不区分大小写的正则匹配
    !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配 的正则
    / 通用匹配,任何请求都会匹配到。
    @ 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

nginx不对url做编码,因此请求为 /static/20%/aa,可以被规则 ^~ /static/ /aa 匹配到(注意是空格)。
多个location配置的情况下匹配顺序为:
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

匹配的优先级

  • 与location在配置文件中的顺序无关
  • = 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配
  • 普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。
  • ^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。
  • 最后匹配理带有"~"和"~*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。

location 优先级官方文档

1. Directives with the = prefix that match the query exactly. If found, searching stops.
2. All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
3. Regular expressions, in order of definition in the configuration file.
4. If #3 yielded a match, that result is used. Else the match from #2 is used.

1. =前缀的指令严格匹配这个查询。如果找到,停止搜索。
2. 所有剩下的常规字符串,最长的匹配。如果这个匹配使用^?前缀,搜索停止。
3. 正则表达式,在配置文件中定义的顺序。
4. 如果第3条规则产生匹配的话,结果被使用。否则,使用第2条规则的结果。

示例

来源: http://www.nginx.cn/115.html

  • 示例
location  = / {
  # 只匹配"/".
  [ configuration A ]
}
location  / {
  # 匹配任何请求,因为所有请求都是以"/"开始
  # 但是更长字符匹配或者正则表达式匹配会优先匹配
  [ configuration B ]
}
location ^~ /images/ {
  # 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
  [ configuration C ]
}
location ~* .(gif|jpg|jpeg)$ {
  # 匹配以 gif, jpg, or jpeg结尾的请求.
  # 但是所有 /images/ 目录的请求将由 [Configuration C]处理.
  [ configuration D ]
}
  • 请求URI
/ -> 符合configuration A
/documents/document.html -> 符合configuration B
/images/1.gif -> 符合configuration C
/documents/1.jpg ->符合 configuration D
  • @location 例子
error_page 404 = @fetch;

location @fetch(
    proxy_pass http://fetch;
)
时间: 2024-11-07 21:51:25

Nginx 指令之location的相关文章

nginx指令之rewrite

语法:rewrite  regex replacement flag 默认值:none 使用环境:server,locacation,if 该指令根据表达式来重定向URL,或者修改字符串.指令根据配置文件中的顺序来执行. 注意:重写表达式只对相对路径有效.如果你想配对主机名,你应该使用if语句,代码如下: if ($host ~* www\.(.*)) {     set    $host_without_www $1;     rewrite ^(.*)$  permanent;  } 如果替

nginx指令中的优化(配置文件)

nginx指令中的优化(配置文件)worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu.worker_rlimit_nofile 102400; 这个指令是指当一个

Nginx配置中Location的匹配规则

Location匹配的url的语法规则: location [=|~|~*|^~] /uri/ { … } = 表示精确匹配 ~ 表示区分大小写的正则匹配 ^~ 表示以某个常规字符串开头的url即可: ~* 表示不区分大消息的正则匹配 !~(*!~)表示不区分大小写不匹配的正则 / 通配符,任何请求都能匹配到这个location,如果有任何其他location可以匹配,则会覆盖该location 匹配顺序: 1)先匹配普通url,在匹配正则 2)“普通 location ”的匹配规则是“最大前缀

Nginx教程(四) Location配置与ReWrite语法

1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {- } 首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配.当有匹配成功时候,停止匹配,按当前匹配规则处理请求. 符号 含义 = = 开头表示精确匹配 ^~ ^~开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(

Nginx指令概述

指令概述 配置指令是一个字符串,可以用单引号或者双引号括起来,也可以不括.但是如果配置指令包含空格,一定要引起来. 指令参数 指令的参数使用一个或者多个空格或者TAB字符与指令分开.指令的参数有一个或者多个TOKEN串组成.TOKEN串之间由空格或者TAB键分隔. TOKEN串分为简单字符串或者是复合配置块.复合配置块即是由大括号括起来的一堆内容.一个复合配置块中可能包含若干其他的配置指令. 如果一个配置指令的参数全部由简单字符串构成,也就是不包含复合配置块,那么我们就说这个配置指令是一个简单配

nginx指令

1.HTTP的核心模块.这些HTTP模块会在编译Nginx时自动编译进来,除非使用configure命令禁止编译这些模块.(1)alias指令.该指令用于在URL和文件系统路径之间实现映射.它与root指令类似,但是网页文件的root根目录不会改变,改变的只是请求URL的文件系统路径.语法:alias file-path| directory-path ;例: location /i/{alias /spool/w3/images/;}在示例中,访问URL地址"/i/top.gif",

Nginx配置之location模块和proxy模块

1.location指令的用法介绍 Location主要用来匹配url,如:http://www.beyond.com/nice,在这里对于location来说www.beyond.com是域名,/nice才是url.对于url的匹配,可以使用字符串或者正则表达式,但如果是正则表达式,必须指定前缀,location指令来匹配不同的url,匹配成功后应用不同的配置语法:location [=|~|~*|^~|@]/url {…..}[=]精确匹配,如果找到匹配等号的内容,立即停止搜索,并立即处理请

Nginx下的location,upstream,rewrite 和 proxy_pass使用总计大全

一 . location: 顾名思义-->地址,也叫路由. nginx服务器非常核心的配置,一般nginx运维人员在修改nginx配置时,大部分也是围绕着location这个配置进行修改. 下面看一下一个简单的location配置: location / { root home/; index index.html; } 这个配置表示任何一个路径访问nginx服务器,都跳转到home目录下的index.html页面中. 下面来详细说一下location 路径匹配规则,location匹配分为3种

nginx 指令之 try_files

Nginx的配置语法灵活,可控制度非常高.在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率. try_files指令说明 try_files指令语法:try_files file ... uri 或 try_files file ... = code默认值:无作用域:server location 其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹