使用Nginx Location可以控制访问网站的路径,但一个server可以有多个location配置,多个location的优先级又该如何区分,本篇文章就给大家介绍下。
Location语法优先级
匹配符 | 匹配规则 | 优先级 |
= | 精准匹配 | 1 |
^~ | 以某个字符串开头 | 2 |
~ | 区分大小写的正则匹配 | 3 |
~* | 不区分大小写的正则匹配 | 4 |
/ | 通用匹配,任何请求都会匹配到 | 5 |
配置网站验证优先级
[root@Web01 ~]# cat /etc/nginx/conf.d/test.conf
server {
listen 80;
server_name test.koten.com;
location = / {
default_type text/html;
return 200 "location = /";
}
location ^~ / {
default_type text/html;
return 200 "location ^~ /";
}
location ~ / {
default_type text/html;
return 200 "location ~ /";
}
location ~* / {
default_type text/html;
return 200 "location ~* /";
}
}
测试Location效果
精准匹配优先级最高
注释掉=,加上/
注释掉^~
注释掉~/
注释掉~*/,只剩/,/优先级最低
Location应用场景
# 通用匹配,任何请求都会匹配到
location / {
...
}
# 严格区分大小写,匹配以.php结尾的都走这个location
location ~ \.php$ {
...
}
# 严格区分大小写,匹配以.jsp结尾的都走这个location
location ~ \.jsp$ {
...
}
# 不区分大小写匹配,只要用户访问.jpg,gif,png,js,css 都走这条location
location ~* .*\.(jpg|gif|png|js|css)$ {
...
}
location ~* \.(jpg|gif|png|js|css)$ {
...
}
# 不区分大小写匹配
location ~* "\.(sql|bak|tgz|tar.gz|.git)$" {
...
}
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!