nginx配置文件 location段 匹配优先规则 附 root 和 alias 的区别

NGINX location 在配置中的优先级

 

 

配置文件示例如下

location = / {

# 仅仅匹配请求 /

[ configuration A ]

}

location / {

# 匹配所有以 / 开头的请求。

# 但是如果有更长的同类型的表达式,则选择更长的表达式。

# 如果有正则表达式可以匹配,则优先匹配正则表达式。

[ configuration B ]

}

location /documents/ {

# 匹配所有以 /documents/ 开头的请求。

# 但是如果有更长的同类型的表达式,则选择更长的表达式。

# 如果有正则表达式可以匹配,则优先匹配正则表达式。

[ configuration C ]

}

location ^~ /images/ {

# 匹配所有以 /images/ 开头的表达式,如果匹配成功,则停止匹配查找。

# 所以,即便有符合的正则表达式location,也不会被使用

[ configuration D ]

}

location ~* \.(gif|jpg|jpeg)$ {

# 匹配所有以 gif jpg jpeg结尾的请求。

# 但是 以 /images/开头的请求,将使用 Configuration D

[ configuration E ]

}

 

匹配结果

 

URL

匹配结果

原因

/

configuration A

=优先级最高,匹配到结束

/index.html

configuration B

路径匹配,

/documents/document.html

configuration C

第二个匹配到,往后继续匹配,发现第三个匹配最精确

/images/1.gif

configuration D

同时匹配第二个,第四个,和第五个。但是由于优先级问题,

/documents/1.jpg

configuration E

同时匹配第二个,第三个,和第五个。第五个是正则表达式,

 

优先级如下

 

(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)

 

注: ~ 和 ~*都是正则匹配 其中 ~* 不区分大小写 ~ 区分大小写

 

 

Nginx root 和 alias 的区别

 

nginx配置下有两个指定目录的执行,root和alias

 

例如有以下配置文件:

 

 

location /img/ {

    alias /var/www/image/;

}

#若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件

location /img/ {

    root /var/www/image;

}

#若按照这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件。

 

 

alias是一个目录别名的定义,root则是最上层目录的定义。

 

还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值