Nginx 之 location 指令匹配规则
Posted reghao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 之 location 指令匹配规则相关的知识,希望对你有一定的参考价值。
location 指令的匹配命令如下:
- ~,执行一个区分大小写的正则匹配。
- ~*,执行一个不区分大小写的正则匹配。
- ^~,普通字符匹配,通常用于匹配目录。
- =,普通字符精确匹配。
@,定义一个命名的 location,用在内部定向中。
例如 error_page 或 try_files 中。
location 上下文的优先级与它在 nginx.conf 文件中的位置无关,只与正则表达式的类型有关。对于相同类型的表达式,会优先匹配字符串长的 location。
- 第一优先级,= 类型表达式。一旦匹配成功,不再查找其他匹配项。
- 第二优先级,^~ 类型表达式。一旦匹配成功,不再查找其他匹配项。
- 第三优先级,~/~* 类型表达式。若有多个 location 的正则匹配,使用匹配最长的那个。
- 第四优先级,常规字符串类型,按前缀匹配。
配置示例
location = / {
...
}
仅匹配来自 / 的请求。
location / {
...
}
匹配所有以 / 开头的请求。
若有更长的同类型表达式,则选择更长的表达式。
若有正则表达式可以匹配,则优先匹配正则表达式。
location ^~ /images/ {
...
}
匹配所有以 /images/ 开头的请求,若匹配成功,则停止匹配查找。
location ~* \.(gif|jpg|jpeg)$ {
...
}
匹配所有以 gif、jpg 和 jpeg 结尾的请求,若匹配成功,则停止匹配查找。
若有以 /images/ 开头的请求,则会使用前一个配置。
以上是关于Nginx 之 location 指令匹配规则的主要内容,如果未能解决你的问题,请参考以下文章