资讯专栏INFORMATION COLUMN

Nginx的location匹配指令及常用内置变量

anonymoussf / 1874人阅读

摘要:有如下指令语法可使用区分大小写的正则匹配不区分大小写的正则匹配普通字符匹配,如果此选项匹配成功,忽略其他匹配选项,一般用来匹配目录普通字符精确匹配定义一个内部命名的匹配,适用于匹配执行顺序及优先级精确匹配精确匹配会第一个被处理,如果精确匹

有如下指令语法可使用

~    #区分大小写的正则匹配

~*   #不区分大小写的正则匹配

^~   #普通字符匹配,如果此选项匹配成功,忽略其他匹配选项,一般用来匹配目录

=    #普通字符精确匹配

@    #定义一个内部命名的匹配,适用于error_page,try_files

匹配执行顺序及优先级:

  


- = 精确匹配
精确匹配会第一个被处理,如果精确匹配成功,停止搜索其他匹配模式,直接使用精确匹配
- 普通字符(/download,/img, ^~ /log,)
如果有前缀 ^~,且匹配此规则, 那么停止搜索其他规则,使用此规则
没有前缀 ^~,那么继续搜索正则匹配或者更长的普通字符匹配,如果发现正则匹配或者更长匹配,则使用正则或者更长匹配
- ~*
正则匹配被最后处理,匹配成功则使用此规则,否则使用其他匹配结果

实例

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
/ 
#符合 configuration B
/documents/document.html
#符合 configuration C    
/images/1.gif
#符合 configuration D
/documents/1.jpg

@location 例子

error_page 404 = @fetch;
location @fetch(
    proxy_pass http://fetch;
)

常见内部变量(如果发现更重要的会继续补充)

  


- $args 请求参数
例如: http://segmentfault.com/?test=test
那么 $args的值就是 test=test
- $uri 不带host(域名)的请求路径
例如: http://segmentfault.com/write
$uri 的值是 write

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39065.html

相关文章

  • Nginx 配置学习笔记

    摘要:上面的代码中定义了一个名为的负载均衡器,里面有三个后端服务,他们是按的方式进行轮询的。在模块中,可以设置后端服务器的信息,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有表示当前的暂时不参与负载均衡。 最近在学习如何对 Nginx 进行配置,故而对 Nginx 的配置文件的结构功能有了一些新的认识。刚开始接触 Nginx 时,感觉它的配置十分高深、难以理解,需要配置什么...

    wuyumin 评论0 收藏0
  • nginx配置location总结rewrite规则写法

    摘要:语法如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用反向代理。不能返回限速,可以通过指令设置如果请求的文件名不存在,则反向代理到。 location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开...

    hiyang 评论0 收藏0
  • nginx配置location总结rewrite规则写法

    摘要:语法如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用反向代理。不能返回限速,可以通过指令设置如果请求的文件名不存在,则反向代理到。 1. location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开...

    zhouzhou 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<