转自:NingG个人博客https://ningg.top/nginx-serie...1.目标nginx反向代理,路径映射的过程是怎样的?如何配置路径映射规则?2、location路径匹配2.1匹配规则:location路径正则匹配:2.2匹配优先级:路径匹配,优先级:(与location的书写顺序无关)精确匹配:=前缀说明严格匹配本次查询。如果找到,停止搜索。普通字符匹配:所有剩余的正则字符串,最长匹配。如果匹配以^~为前缀,则搜索停止。正则匹配:正则表达式,按照配置文件定义的顺序,匹配一个结果,搜索停止;默认匹配:如果第三条规则产生匹配,则使用结果。否则,从规则2开始使用。2.3例子通过一个例子,简单说明一下匹配优先级:location=/{#完全匹配/,主机名后面不能跟任何字符串[配置A]}location/{#因为所有地址都是以/开头,所以这个A规则会匹配所有的请求#但是会先匹配正则和最长的字符串[配置B]}location/documents/{#匹配任意以/documents/开头的地址,匹配后继续查找#只有当后面的正则表达式不匹配时,这个会用到[配置C]}location~/documents/Abc{#匹配任意以/documents/开头的地址,匹配到之后继续往下搜索#只有后面的正则表达式不匹配,这个就用这个[configurationCC]}location^~/images/{#匹配任意以/images/开头的地址,匹配到后停止往下搜索正则,用这个。[configurationD]}location~*\.(gif|jpg|jpeg)${#匹配所有以gif、jpg或jpeg结尾的请求#但是,所有/images/下的图片请求都会被configD处理,因为^~达不到这条规则[配置E]}location/images/{#字符匹配/images/,继续往下,你会发现^~存在[配置F]}location/images/abc{#最长的字符匹配/images/abc,继续往下,你会发现^~存在#F和G放置顺序无关[配置G]}location~/images/abc/{#只有去掉配置D才有效:longestmatchfirstForconfigG开头的地址,继续往下查找匹配这条规则,使用[configurationH]}location~*/js/.*/\.js按照上面的location写法,建立如下匹配例子:/->configA:完全匹配,即使/index.html也匹配不到/downloads/download.html->configB:匹配B后,下面没有匹配,使用B/images/1.gif->配置D:匹配到F,往下匹配D,不往下走/images/abc/def->configD:最长的匹配是G,往下匹配D,不往下走,可以看到任何以/开头的images/将匹配转到D并停止。这里写FG是没有意义的,H永远不会转。这里只是为了说明匹配顺序/documents/document.html->configC:匹配到C,下面没有匹配。使用C/documents/1.jpg->配置E:匹配到C,再匹配E/documents/Abc.jpg->配置CC:最长匹配到C,按正序往下匹配到CC。我就往下E了,如果有什么错误或者其他问题,欢迎给小伙伴们留言,指出有帮助,欢迎点赞+转发分享。欢迎大家关注米公公的公众号:米公公的技术之路
