请输入图片描述
使用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效果

精准匹配优先级最高

2023-11-06T12:43:02.png

注释掉=,加上/

2023-11-06T12:43:42.png

注释掉^~

2023-11-06T12:46:09.png

注释掉~/

2023-11-06T12:46:49.png

注释掉~*/,只剩/,/优先级最低

2023-11-06T12:47:26.png

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)$" {
    ...
}

持续分享运维干货,感谢大家的阅读和关注!

发表评论

召唤看板娘