一,匹配规则
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的时候,停止匹配,处理请求。