nginx中location匹配规则介绍

时间:2024-12-18 13:04:20

一,匹配规则

1,= 表示精确匹配

例子:http://localhost/  将匹配到 location = / {...}

http://localhost/aaa  可以匹配到 location = /aaa {...}

2,^~表示匹配url以什么样的字符串开头

例子:http://localhost/static/haha  可以匹配到 location = ^~/static/haha {...}

http://localhost/static/haha/hehe  可以匹配到 location = ^~/static/ /haha {...}

3,~表示区分大小写的正则匹配

~*不区分大小写的正则匹配

例子:对于location ~ \.(gif|jpg|png|js|css)$ {...}和location ~* \.png$ {...}

http://localhost/123.png都可以与之匹配。而http://localhost/123.PNG只能与后一个匹配

4,!~表示区分大小写的不匹配

!~*不区分大小写的不匹配

例子:对于location !~ \.(gif|jpg|png|js|css)$ {...}和location !~* \.png$ {...}

http://localhost/123.png和以上都不匹配,http://localhost/123.PNG与第一个匹配,第二个不匹配,http://localhost/123.mp4与以上两个都匹配

5,/ 通用匹配,任何请求都可以匹配到location / {...}

二,匹配顺序

当一个请求能匹配多个location的时候会怎么样呢?当然是只遵循一个location,那么遵循哪一个的。

首先匹配=,其次匹配^~,其他的正则匹配按照配置文件中的顺序来,最后匹配 /,当匹配到合适的location的时候,停止匹配,处理请求。