精准匹配和普通匹配:
   server{
           location =/index.htm{                                       ////精准匹配
                   root /var/www/html                                  ////root 指向的目录 也可以写在外面,这样的意思就是 server 的 公共目录,location 可以单独指向一个目录。
                   index index.htm index.html
           }
 
           location =/{
                   root /var/www/html
                   index index.htm index.html
           }
          
           location /index.htm {                                         ////正则匹配
                   root /usr/local/src/nginx/html
                   index index.htm index.html
           }
   }
         如果你在浏览器输入一个 192.168.1.200 访问,服务器会把 url 看做 /,这样就会精准配准第二个 location,然后 url 就被服务器转换成 192.168.1.200/index.htm ,然后访问,再次匹配,又被精准定位第一个 location,然后访问,没有可以匹配的 location 就直接访问到 /var/www/html/index.htm 页面
       
         我的猜测是,如果没有指定具体访问页面,会默认当做访问的是 location 里的 index 第一个指定的页面。
 
正则匹配和普通匹配:
      server {
              location /{
                       root html;
                       index index.html index.htm;
             }
         
              location ~ image{
                      root /var/www/
                      index index.html;
             }
       }
             第二段 location 是正则匹配,当  url 中包含 image 就会指向 /var/www 目录【这就是动静分离、img 的 src 也会触动 location】。其实第一个 location 也会进行匹配,因为第一个 / 符合第一个 location 的规则,但是在跳转访问时会匹配到第二个 location 会覆盖前面第一个定位的地址。
 
 
注意:
      普通匹配是谁匹配的长就是谁的为主。
      正则匹配是按照从上往下顺序执行的。
 
总结:
       如果 root 指向的目录写在 server 里面,且 location 里面没有指定 root ,就会按照 server 全局里面的当做根目录。
      location 就是匹配 url,无论是域名还是 ip 都会看成一个 /。后面的路径就是我们写的规则来匹配。
 
      location 的命中过程是这样的:1、先判断精准命中,如果命中,立即返回结果并结束解析过程。2、判断普通命中,如果多个命中,记录下最长的命中结果(记录但不结束,最长的为准)。继续判断正则表达式的解析结果,按配置里的正则表达式的顺序为准,由上到下开始匹配,一旦匹配成功 1 个,立即返回结果,并结束解析过程。

最新文章

  1. android-配置文件AndroidManifest.xml
  2. Unity WebGL MoonSharp崩溃问题
  3. PHP常见框架
  4. fil_space_t
  5. DirectX截图黑屏的解决办法
  6. Operfire/XMPP
  7. Windows下Vundle插件BundleSearch命令出现错误解决方案
  8. [C++程序设计]指针数组和指向指针的指针
  9. 兼容所有浏览器的CSS3圆角
  10. mockito中两种部分mock的实现,spy、callRealMethod
  11. 基于 Hexo + GitHub Pages 搭建个人博客(一)
  12. Javamail pop3连接QQ邮箱遇到最深的坑
  13. docker(三) 镜像和容器常用命令
  14. C++ 第二次实验
  15. 方程的解_NOI导刊2010提高
  16. js动态添加元素绑定事件问题
  17. html5-attr和prop
  18. Hibernate的条件查询的几种方式+查询所有的记录
  19. Java Web应用开发中的一些概念
  20. c++获取随机数

热门文章

  1. asp.net DataTables
  2. Django(part3)
  3. QT笔记 -- (1) .ui文件
  4. Node_进阶_3
  5. NOIp2018模拟赛四十二
  6. POJ-2240 Arbitrage BellmanFord查可循环圈
  7. salt 安装kubernetes集群3节点
  8. PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  9. 养活一款APP要“烧”多少钱?
  10. 4.有关日期格式属性改动常识,v$nls_parameters,between and,查询指定部门的员工信息,in和null,like模糊查询,order by后面能够跟:列名、表达式、别名、序号