作者:多米音乐_34024963 | 来源:互联网 | 2024-10-27 10:32
本文详细解析了Nginx中通配符配置的使用方法,并通过具体实例展示了其在路径匹配中的应用。文章介绍了如何利用精确匹配符号(如`^~`)来指定URI以特定字符串开头,特别指出Nginx不会对URL进行编码处理,因此像`static20%aa`这样的请求能够被`^~`规则有效匹配。此外,还探讨了其他常见的通配符及其在实际场景中的应用技巧。
1、Nginx路径匹配符号
= 表示精确匹配
^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
~ 正则匹配(区分大小写)
~* 正则匹配(不区分大小写)
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 任何请求都会匹配
2、符号的优先级
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
3、例子,有如下匹配规则:
location = / {
#规则A
}
location = /login {
#规则B
}
location ^~ /static/ {
#规则C
}
location ~ \.(gif|jpg|png|js|css)$ {
#规则D
}
location ~* \.png$ {
#规则E
}
location !~ \.xhtml$ {
#规则F
}
location !~* \.xhtml$ {
#规则G
}
location / {
#规则H
}
4、Rewirte配置
rewrite指令的最后一项参数为flag标记,flag标记有一下四种,说明一下:
1> last-标记在本条rewrite规则执行完毕后,会对其所在server{......}标签重新发起请求。使用last实现URI重写后,浏览器地址栏不变。使用alias指令必须用last标记。
2> break-标记在本条规则匹配完成后,终止匹配,不再匹配后面的规则。使用break实现URI重写后,浏览器地址栏不变。使用proxy_pass指令时,需要使用break标记。
3> redirect-返回302临时重定向,浏览器地址会显示跳转后的URL地址。
4> permanent-返回301永久重定向,浏览器地址会显示跳转后的URL地址。