最近一直在做location的配置,遇到优先级别问题(如有配置不当,会存在安全隐患),以下是个人的一些学习体会

一、location 匹配符

1.等于匹配符:      ##“=

其特点可概括为两点:   ##.精确匹配,.不支持正则表达式

语法示例:

     location = /static/img/file.jpg {

     ...

     }

Code-1

2.空  匹配符: 空匹配符的特点是:   ##.匹配以指定模式开始的URI,.不支持正则

语法示例:

     location /static/img/ {

     ...

     }

Code-2

3.正则匹配符: “~”     ##区分大小写的正则匹配

语法示例:

     location ~ /static/img/.*\.jpg$ {

     ...

     }

Code-4

4.~*  表示:    ##不区分大小写的正则匹配,但是一些对大小写不敏感的系统,这两者没区别。

语法示例:

     location ~* /static/img/.*\.jpg$ {

     ...

     }

Code-5

5.^~  表示:    ##优先前缀匹配

 location ^~/static/img/ {

 ...

 }

Code-6

6.内部访问符 @  表示:    ##一般用于错误页面

二、匹配优先级

1.=

2.空匹配符,满足精准匹配时

3.^~

4.~或~*

对于请求http://luck.com/static/img/test.jpg

1.如命中精确匹配,例如:

     location = /static/img/logo.jpg {

     }

Code-7

则优先精确匹配,并终止匹配。

2.如果命中多个 空 匹配,例如:

     location /static/ {

     }

     location /static/img/ {

     }

Code-8

则记住最长的前缀匹配,即上例中的/static/img/,并继续匹配。

3.如果最长的前缀匹配是优先前缀匹配,例如:

     location /static/ {

     }

     location ^~ /static/img/ {

     }

Code-9

则命中次最长的优先最长匹配,并终止匹配

4.如果命中多个正则匹配,例如:

     location /static/ {

     }

     location /static/img/ {

     }

     location ~* /static/ {

     }

     location ~* /static/img/ {

     }

Code-10

则忘记上述 2 中的最长前缀匹配,使用第一个命中的正则匹配,即上例中的 location ~* /static/ ,并终止匹配(命中多个正则匹配,优先使用配置文件中出现次序的第一个)

三、实战经验总结
1.location 匹配的优先级(来自实践总结)
(location =) -> (location 完整路径) ->(location ^~ 路径) ->(location ~* 正则) ->(location 路径)
只要匹配到,其它的都会忽略,然后返回到改匹配。

nginx之location匹配优先级和安全问题的更多相关文章

  1. Nginx之Location匹配规则

    概述 经过多年发展,nginx凭借其优异的性能征服了互联网界,成为了各个互联网公司架构设计中不可获取的要素.Nginx是一门大学问,但是对于Web开发者来说,最重要的是需要能捋的清楚Nginx的请求路 ...

  2. Nginx之location 匹配规则详解

    有些童鞋的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我,因为按“先匹配普通, ...

  3. Nginx 配置 Location 规则优先级问题

    nginx 的 location与配置中 location 顺序没有关系,与 location 表达式的类型有关.相同类型的表达式,字符串长的会优先匹配. 以下是按优先级排列说明: 等号类型(=)的优 ...

  4. Nginx中location匹配及rewrite重写

    目录 一.常用的Nginx正则表达式 二.location 2.1.location三类匹配类型 2.2.常用的匹配规则 2.3.location优先级 2.3.1.举例说明 2.4.实际网站使用中, ...

  5. nginx中location匹配顺序

    一.location语法 语法: Syntax: location [ = | ~ | ~* | ^~ ] uri { ... } location @name { ... } Default: - ...

  6. Nginx的location匹配规则

    一 Nginx的location语法 location [=|~|~*|^~] /uri/ { … } =         严格匹配.如果请求匹配这个location,那么将停止搜索并立即处理此请求 ...

  7. 测试Nginx中location的优先级!(重点)

    location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ~ 开头表示区分大小写的正则匹配 ~* 开头表示不区分大小写的正则匹配 ^~ 开头表示uri以某个常规字符串开头 ...

  8. Nginx使用Location匹配URL进行伪静态

    基础知识 Nginx location 配置语法 1. location [ = | ~ | ~* | ^~ ] uri { ... } 2. location @name { ... } locat ...

  9. nginx的location匹配

    http://www.cnblogs.com/lidabo/p/4169396.html 这个博主写的非常好 location: 先匹配普通location,再匹配正则表达式 1.而且选择了最大前缀匹 ...

随机推荐

  1. 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希

    据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...

  2. centos 6 YUM安装 lmp

    准备篇: 1.配置防火墙,开启80端口.3306端口       vi /etc/sysconfig/iptables       -A INPUT -m state --state NEW -m t ...

  3. Atitti.dw cc 2015 绿色版本安装总结

    Atitti.dw cc 2015 绿色版本安装总结 1.1. 安装程序无法初始化.请下载adobe Support Advisor检测该问题.1 1.1.1. Adobe Application M ...

  4. APUE学习之多线程编程(二):线程同步

         为了保证临界资源的安全性和可靠性,线程不得不使用锁,同一时间只允许一个或几个线程访问变量.常用的锁有互斥量,读写锁,条件变量           一.互斥量      互斥量是用pthrea ...

  5. 消息服务MNS和消息队列ONS产品对比

    消息服务MNS和消息队列ONS产品对比 MNS已经进过严格测试,已达到商业化的稳定性要求,其主要特点和适用场景 1.数据高可靠(10个9),对于数据可靠性敏感(要求消息数据不丢)的应用场景建议选择. ...

  6. Spark机器学习· 实时机器学习

    Spark机器学习 1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors. ...

  7. scheduletask任务调度(2间隔时间)

    Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "myTriggerGr ...

  8. 基于AngularJS的个推前端云组件探秘

    基于AngularJS的个推前端云组件探秘 AngularJS是google设计和开发的一套前端开发框架,帮助开发人员简化前端开发的负担.AngularJS将帮助标准化的开发web应用结构并且提供了针 ...

  9. POJ 2125 Destroying the Graph 二分图最小点权覆盖

    Destroying The Graph Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8198   Accepted: 2 ...

  10. docker常用命令

    yum install wget -y wget -O etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7 ...