Nginx正则匹配详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx正则匹配详解相关的知识,希望对你有一定的参考价值。

参考技术A 1.location 介绍

    •location 是在 server 块中配置,用来通过匹配接收的uri来实现分类处理不同的请求,如反向代理,取静态文件等

    •location 在 server 块中可以有多个,且是有顺序的,会被第一个匹配的 location 处理

    •localtion 匹配功能只做匹配分发用,并不会改变uri的内容或其他作用,我一开始理解的时候就混淆了一些概念,建议多做测试看实际效果

2.localtion 匹配规则

    •location [ = | ~ | ~* | ^~ ] uri …

    •location @name …

注1:规则不能混合使用

注2:以下例子说明都以该server为基础

server

  listen    8861;

  server_name abc.com;



“=” 精确匹配

  •内容要同表达式完全一致才匹配成功

例:

location = /

  .....



# 只匹配http://abc.com

# http://abc.com [匹配成功]

# http://abc.com/index [匹配失败]

“~”,大小写敏感

例·:

location ~ /Example/

  .....



#http://abc.com/Example/ [匹配成功]

#http://abc.com/example/ [匹配失败]

“~*”,大小写忽略

例:

location ~* /Example/

  .....



# 则会忽略 uri 部分的大小写

#http://abc.com/test/Example/ [匹配成功]

#http://abc.com/example/ [匹配成功]

“^~”,只匹配以 uri 开头

例:

location ^~ /index/

  .....



#以 /img/ 开头的请求,都会匹配上

#http://abc.com/index/index.page  [匹配成功]

#http://abc.com/error/error.page [匹配失败]

“@”,nginx内部跳转

例:

location /index/

  error_page 404 @index_error;



location @index_error

  .....



#以 /index/ 开头的请求,如果链接的状态为 404。则会匹配到 @index_error 这条规则上。

不加任何规则

  •不加任何规则则时,默认是大小写敏感,前缀匹配,相当于加了“~”与“^~”

  •只有 / 表示匹配所有uri

location /index/

  ......



#http://abc.com/index  [匹配成功]

#http://abc.com/index/index.page  [匹配成功]

#http://abc.com/test/index  [匹配失败]

#http://abc.com/Index  [匹配失败]

# 匹配到所有uri

location /

  ......

以上是关于Nginx正则匹配详解的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 关于 location 的匹配规则详解

Nginx正则表达式location匹配Rewrite重写详解

Nginx之location 匹配规则详解

nginx location指令详解

Nginx之location 匹配规则详解

Nginx 关于 location 的匹配规则详解