一、概述
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)$" {
...
}