Location 匹配模式
一、语法
location [=|~|~*|^~] uri{
root /var/www/html
index index.html index.htm
}
1. 普通模式
中括号中的符号 ,表示不同的匹配模式,若不填写,则表示普通模式
2. 精确模式 =
location = /web/index.html {
root /var/www/html
index index.html index.htm
}
仅当访问的域名后的地址为“/web/index.html”时 匹配成功。
需要注意的是,当普通匹配的结果是严格精确的,则停止匹配返回结果。
3. 正则模式 ~ / ~
~ 表示区分大小写
~* 表示不区分大小写
location ~* /.(jpg|gif|jpeg) {
root /var/www/html/resource/images
}
当访问的资源是一个图片时 匹配成功
4. 非正则模式 ^~
^
表示“非”,~
表示正则,连起来就表示"非正则",既不使用正则匹配
在不使用“非正则”的时候,执行完普通匹配后,并不会返回匹配结果,而是继续正则匹配。如果使用了“非正则模式”,则在执行完普通模式后执行非正则模式,一旦匹配(不需要精确),马上返回结果。
二、Location流程图
location 的指令与编辑顺序无关,这句话不全对。对于普通 location 指令,匹配规则是:最大前缀匹配(与顺序无关),如果恰好是严格精确匹配结果或者加有前缀“ ^~ ”或“ = ”(符号“ = ”只能严格匹配,不能前缀匹配),则停止搜索正则 location ;但对于正则 location 的匹配规则是:按编辑顺序逐个匹配(与顺序有关),只要匹配上,就立即停止后面的搜索。
文字说明
进行精准匹配,检查是否在
=
精准匹配模式下,匹配成功,若成功则停止检查。进行普通匹配,匹配完成后,记录匹配到的最长的结果,如果这个结果恰好是完全精准的匹配,则把该结果看做是精准匹配,会停止检查,立即返回该结果。
判断是否可以进行正则匹配,如果存在
^=
符号的location段,表示不进行正则匹配,立即返回结果。按照书写顺序正则匹配,匹配到立即返回结果
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。