nginx location详解

来源:互联网 发布:手机版windows系统 编辑:程序博客网 时间:2024/05/17 02:50
location 有”定位”的意思, 根据Uri来进行不同的定位.在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分,定位到不同的处理方式上.
location 的语法

location [=|~|~*|^~] patt {# 精确匹配: 相等(=)# 字符串匹配: 字符串匹配(空格) 匹配开头(^~)# 正则匹配: 区分大小写匹配(~) 不区分大小写匹配(~*) 区分大小写不匹配(!~) 不区分大小写不匹配(!~*)}

大概分为3类
location = patt {} [精准匹配]location patt{}  [一般匹配]location ~ patt{} [正则匹配]
location匹配优先级
精确匹配 > 字符串匹配( 长 > 短 [ 注: ^~ 匹配则停止匹配 ]) > 正则匹配( 上 > 下 )
# 精确匹配只能命中一个# 字符串匹配使用匹配最长的最为匹配结果# 正则匹配按照location定义的顺序进行匹配,先定义具有高优先级

如果有精确匹配,则命中精确匹配,如果没有精确匹配字符串匹配优先搜索,但是只是记录下最长的匹配 ( 如果 ^~ 是最长的匹配,则会直接命中,停止搜索正则 ),然后继续搜索正则匹配,如果有正则匹配,则命中正则匹配,如果没有正则匹配,则命中最长的字符串匹配.

实例

location = /html/index.html{    echo 'config1';}location  /html/index.html {    echo 'config2';}location \/html\/index\.html$ {    echo 'config3';}location /index.html {   echo 'config4';}

如果请求http://xxx/html/index.html,那么有精确匹配则匹配,所以config1被匹配中

如果删除config1,重新加载配置文件再次请求,则config3被匹配中

如果删除config1,config3,重新加载配置文件再次请求,则config2被匹配中,因为config2比config4匹配更长



0 0
原创粉丝点击