一、概述
Location指令是nginx中最关键的指令之一,location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,但一个server可以有多个location配置, 多个location的优先级该如何区分。
二、Location语法
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location
三、Location匹配符
匹配符 |
匹配规则 |
优先级 |
= |
精确匹配 |
1 |
^~ |
以某个字符串开头 |
2 |
~ |
区分大小写的正则匹配 |
3 |
~* |
不区分大小写的正则匹配 |
3 |
/ |
通用匹配,任何请求都会匹配到 |
4 |
四、Location优先级验证
[root@web02 /etc/nginx/conf.d]# vim location.conf
server {
listen 80;
server_name www.location.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 / {
...
}
#严格区分大小写,匹配以.php结尾的都走这个location
location ~ \.php$ {
...
}
#严格区分大小写,匹配以.jsp结尾的都走这个location
location ~ \.jsp$ {
...
}
#不区分大小写匹配,只要用户访问.jpg,gif,png,js,css结尾的都走这条location
location ~* .*\.(jpg|gif|png|js|css)$ {
...
}
#不区分大小写匹配
location ~* "\.(sql|bak|tgz|tar.gz|.git)$" {
...
}