一、 路由--Location的使用

9.1. Location语法规则

语法规则: location [=|~|~*|^~] /uri/ {… }

首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

符号

含义

=

= 开头表示精确匹配

^~

^~开头表示uri以某个常规字符串开头,理解为匹配 url路径即可(禁止正则匹配)。

~

~ 开头表示区分大小写的正则匹配

~*

~* 开头表示不区分大小写的正则匹配

!~和!~*

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则

/

用户所使用的代理(一般为浏览器)

匹配规则优先级如下:

² =精准匹配命中时,停止location动作,直接走精准匹配,

² 一般匹配(含非正则)命中时,先收集所有的普通匹配,最后对比出最长的那一条

² 如果最长的那一条普通匹配声明为非正则,直接此条匹配,停止location

² 如果最长的那一条普通匹配不是非正则,继续往下走正则location

² 按代码顺序执行正则匹配,当第一条正则location命中时,停止location

9.2. path匹配过程

假设http请求路径为

http://192.168.0.132:8088/mvc/index?id=2 ,匹配过程如下:

² 将整个url拆解为域名/端口/path/params

² 先由域名/端口,对应到目标server虚拟主机

² path部分参与location匹配,path = path1匹配部分 + path2剩余部分

² 进入location方法体内部流程。

² 若是静态文件处理,则进入目标目录查找文件:root指令时找path1+path2对应的文件;alias指令时找path2对应的文件

² 若是proxy代理,则形如proxy_pass=ip:port时转发path1+path2路径到tomcat;形如proxy_pass=ip:port/xxx时转发path2路径到tomcat。params始终跟随转发。

最新文章

  1. css3(border-radius)边框圆角详解
  2. VS工程里的文件都是啥?如何打包? 2015-03-04
  3. 用swift实现自动录音器
  4. Simultaneous Tag Editing in IntelliJ IDEA 14.1
  5. [置顶] [BZOJ]2127: happiness 最小割
  6. MVC小系列(十一)【Html.BeginForm与Ajax.BeginForm】
  7. Cer Crt Pem Pfx 证书格式转换
  8. WebFrom模拟MVC
  9. Java SE基础部分——常用类库之NumberFormat(数字格式化)
  10. AppDelegate关于应用程序挂起、复原与终止的代理方法
  11. Spring Mvc中使用Task实现定时任务,以及遇到的一个问题
  12. 九度OJ题目1076:N的阶乘 (java)运用BigInteger的例子。
  13. 【三十三】thinkphp之SQL查询语句(全)
  14. redis-cli 通过管道 --pipe 快速导入数据到redis中
  15. 入门项目 A6 lib common 登陆状态装饰
  16. Linux中的configure,make,make install到底在做些什么
  17. 学习Django,http协议,
  18. 【BZOJ4888】[TJOI2017]异或和(树状数组)
  19. [T-ARA][Apple is A]
  20. django 模型中 class Meta 内 各种属性的用法

热门文章

  1. Web 开发必须掌握的三个技术:Token、Cookie、Session
  2. Java基础—对象构造
  3. ResNeSt:Split attention
  4. jquery—实现能滚动的选项卡效果
  5. printf函数和putchar函数
  6. ThinkPHP 6.0 基础教程 - 安装
  7. troubleshoot之:分析OutOfMemoryError异常
  8. 当Notification和Websocket遇到https、http
  9. unity探索者之复制内容到剪贴板
  10. 【服务器部署】Django+宝塔+Nginx_uwsgi部署