11. Nginx Location 匹配规则
location / {
# root 关键词,是定义网页根目录的。 html 是以 nginx 安装目录 为相对路径的
root html;
# index 关键词,是定义 nginx 访问首页的名字,默认去找 index.html
index index.html index.htm;
#autoindex on;
}
- location 相关语法
location [ = | ~ | ~* | ^~ ] url {
.......
}
匹配符 | 匹配规则 | 优先级 |
---|---|---|
= | 精确匹配;用于标准uri前,要求请求字符串和uri严格匹配。如果匹配成功,就停止匹配,立即执行该location里面的请求。 | 1 |
^~ | 非正则匹配;用于标准uri前,nginx服务器匹配到前缀最多的uri后就结束,该模式匹配成功后,不会使用正则匹配。 | 2 |
~* | 正则匹配;用于正则uri前,表示uri里面包含正则,不区分大小写。 | 3 |
/blog/ | 直接访问域名或者ip后面加上 blog,例:192.168.169.142:80/blog | 4 |
/ | 通用匹配,不符合其他匹配规则的 | 5 |
# nginx.conf 支持在虚拟朱继忠定义多个 location,进行用户请求 url 的解析
server{
location = {
}
location ^~ {
}
....
}
11.1 案例:location 匹配测试
vim mylocation.conf
server {
listen 83;
server_name _;
# 最低级匹配,不符合其他 location 匹配规则就在这里匹配
location / {
return 401;
}
# 优先级最高匹配,精确匹配,例如访问:192.168.169.152:83/ (注意这里一定要加上 / 不然不知道访问的是什么)
location = / {
return 402;
}
# 以 /demo/ 开头的 url 匹配,如果符合其他 location 匹配规则,则其他匹配优先
location /demo {
return 403;
}
# 匹配任何以 /img/ 开头的请求,不匹配正则,例如:192.168.169.152:83/img
location ^~ /img {
return 404;
}
# 匹配任何以 .gif 结尾的请求,支持正则
location ~* \.(gif|jpg|jpeg) {
return 500;
}
}
# 注意:这里如过访问 192.168.169.152:83/img.jpg 按上面配置文件如果是以 jpg 结尾的返回 500 ,但是测试是返回 404 即匹配到了 img 开头的,这是以为 ^~ 比 ~* 优先级高
测试: