美文网首页
Nginx路由匹配规则的一些理解

Nginx路由匹配规则的一些理解

作者: baboq | 来源:发表于2017-10-06 19:35 被阅读0次

使用过nginx的同学都知道,在nginx配置文件中通过location配置路由转发规则,配置语法为:

location   [=|~|~*|^~]    /uri/   { 
          ...
}

中括号中为路由匹配符号,常见的有:

1  =:精确匹配
2  ^~:精确前缀匹配
3  ~:区分大小写的正则匹配
4  ~*:不区分大小写的正则匹配
5  /uri:普通前缀匹配
6  /:通用匹配

精确匹配

精确匹配使用 表示,nginx进行路由匹配的时候,精确匹配具有最高的优先级,请求一旦精确匹配成功nginx会停止搜索其他到匹配项

配置实例

location = /test {
        ...
}

精确前缀匹配

精确前缀匹配的优先级仅次于精确匹配,nginx对一个请求精确前缀匹配成功后,停止继续搜索其他到匹配项

配置实例

location ^~ /test_a {
        ...
}

正则匹配

正则匹配分为区分大小写和不区分大小写两种,分别用 ~~* 表示;一个请求精确匹配和精确前缀匹配都失败后,如果配置有相关的正则匹配location,nginx会尝试对该请求进行正则匹配。需要说明的是正则匹配之间没有优先级一说,而是按照在配置文件中出现的顺序进行匹配,一旦匹配上一个,就会停止向下继续搜索

配置实例

# 配置1
location ~ /test_a {
        ...
}

# 配置2  
location ~* /test_A {
        ...
}

对于请求 /test_a/hello 来说会被匹配到 配置1 处理,/test_A/hello 则会被匹配给 配置2 处理

普通前缀匹配

普通前缀匹配前面没有任何修饰符,直接在location后写需要匹配的uri,它的优先级次于正则匹配

配置实例

location /img {
        ...
}

通用匹配

通用匹配使用一个 / 表示,可以匹配所有请求,一般nginx配置文件最后都会有一个通用匹配规则,当其他匹配规则均失效时,请求会被路由给通用匹配规则处理;如果没有配置通用匹配,并且其他所有匹配规则均失效时,nginx会返回 404 错误

配置实例

location / {
        ...
}

引用一个完整例子

nginx路由规则配置:

location = / {
   echo "规则A";
}
location = /login {
   echo "规则B";
}
location ^~ /static/ {
   echo "规则C";
}
location ^~ /static/files {
    echo "规则X";
}
location ~ \.(gif|jpg|png|js|css)$ {
   echo "规则D";
}
location ~* \.png$ {
   echo "规则E";
}
location /img {
    echo "规则Y";
}
location / {
   echo "规则F";
}
请求uri 匹配路由规则
http://localhost/ 规则A
http://localhost/login 规则B
http://localhost/register 规则F
http://localhost/static/a.html 规则C
http://localhost/static/files/a.txt 规则X
http://localhost/a.png 规则D
http://localhost/a.PNG 规则E
http://localhost/img/a.gif 规则D
http://localhost/img/a.tiff 规则Y

以上是对nginx路由匹配规则的粗略总结和归纳,如有不足之处欢迎指正,共同探讨!

相关文章

  • Nginx路由匹配规则的一些理解

    使用过nginx的同学都知道,在nginx配置文件中通过location配置路由转发规则,配置语法为: 中括号中为...

  • nginx 配置静态文件

    [nginx try_files的理解] Nginx location的匹配规则 location 匹配优先级 示例

  • Nginx location的正则匹配

    Nginx location的正则匹配 Nginx正则匹配的匹配规则

  • nginx 正则和路由规则

    nginx 参考 location uri匹配规则 语法规则: location [=||*|^~] /uri/ ...

  • nginx重写规则

    nginx重写规则 nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配 ~* 为不区分大...

  • Nginx 匹配规则

    Nginx 内核源码解析 nginx location 练习 Nginx location 配置踩坑过程分享ngi...

  • nginx匹配规则

    表达式含义=严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求~区分大小写匹配(可用正则表...

  • Nginx 匹配规则

    无 :默认匹配,普通匹配 = :精确匹配 ~* :匹配正则表达式,不区分大小写 ~ :匹配正则表达式,区分大小写 ...

  • nginx匹配规则说明以及匹配的优先级

    location 匹配规则 语法规则 前缀匹配时,Nginx 不对 url 做编码,因此请求为 /static/2...

  • nginx基础知识

    nginx主配置文件 nginx.conf 配置文件结构如下: location匹配规则 语法规则location...

网友评论

      本文标题:Nginx路由匹配规则的一些理解

      本文链接:https://www.haomeiwen.com/subject/bupryxtx.html