nginx提供了非常灵活的location uri路径匹配功能。在配置文件中格式如下:

语法:	location [ = | ~ | ~* | ^~ ] uri { ... }
        location @name { ... }
默认值:	—
上下文:	server, location

  先总结一下location的类型:

  • 精确匹配的location
    例如:location = /a.txt
    匹配一个为/a.txt的uri,完整的url可以是 http://host/a.txt?q=xxx

    再如:locaiton = /
    匹配一个为/的uri, 完整的url可以是 http://host/?q=xxx

  • 模糊匹配的location

  • 前缀匹配
    例如:location /a/b/c/
    匹配一个以/a/b/c/为前缀路径的uri
    完整的url可以是 http://host/a/b/c/x.jpg,或者:http://host/a/b/c/xxx/m.php?q=xxxx

  • 不忽略大小写
    例如:location ~* .(gif|jpg|jpeg)$
    匹配所有以gif或者jpg或者jpeg为文件扩展名的uri,并且后缀名不区分大小写

  • 忽略大小写
    例如: location ~ .mp4$
    匹配所有以mp4为扩展名的uri,并且区分后缀名的大小写

  • 正则前缀匹配
    例如:location ^~ /images
    匹配所有以/images开头的uri

  • 默认匹配的location
    例如:location /
    匹配所

  • 【实验1】如果用户使用IE|firefox浏览器访问www.test.org,则返回200状态码+提示更换浏览器。【实验】过滤nginx请求中包含a1=3526的http请求到192.168.200.121:8080端口处理。【实验3】如果用户使用IE或者firefox浏览器访问www.test.org,则直接跳转京东网站。【实验2】如果用户使用IE或者firefox浏览器访问www.test.org,则返回500错误。【实验】将用户请求url.test.org.zh跳转到url.test.org。 1.匹配模式及顺序举例=开头表示精确匹配,只有完全匹配上才能生效^~开头对URL路径进行前缀匹配,并且在正则之前~开头表示区分大小写的正则匹配不带任何修饰符,也表示前缀匹配,但是在正则匹配之后,如果没有正则命中,命中最长的规则location/通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default2.location是否以“/”结尾在ngnix中location进行的是模糊匹配。... 1、 语法 [ = |~ | ~* | ^~ | @ ] /uri/ 注:uri是指匹配路径, [ =| ~ | ~* | ^~ | @ ] 是指匹配规则(可选) location ^~/uri/{ location =/uri/{ 2、 语法说明 规则语法!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则, 但是是用于条件判断的时候(即if语句)if ($host !~* "^www.") { # ... }匹配简单来说:优先匹配 = 精确匹配, 若未匹配到则转下一步骤依照最大前缀匹配规则, 先匹配普通规则(空 , ^~)若最终匹配到 ^~, 则使用若匹配到 空 或 未匹配到, 则转下一步骤(当前匹配结果暂时保存)按照物理存储顺...   本文我们来给大家详细介绍下Nginx中的核心配置文件中的Location匹配规则。   location会尝试根据用户请求中的URI来匹配上面的/uri表达式,如果可以匹配,就选择location{}块中的配置来处理用户请求。当然,匹配方式是多样的, 下面介绍location匹配规则location [=|~|~*] /uri/ { ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大小写 = #进行普通字符精确匹 直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。# 这里是直接转发给后端应用服务器了,也可以是一个静态首页 # 第一个必选规则 location = / {第二个必选规则是处理静态文件请求,这是 nginx 作为 http 服务器的强项# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用 location ^~ /static/ {}第三个规则就是通用规则,用来转发动态请求到后端应用服务器。 location[=|~|~*|^~]uri{…} 其中,方括号中的四种标识符是可选项,用来改变请求字符串和uri的匹配方式。uri是待匹配的请求字符串,可以是不包含正则的字符串,这种模式被称为“标准的uri";也可以包含正则,这种... 什么是locationnginx就是通过拦截到的请求去对配置好的location块(location block)进行请求代理的。被代理的URL去对location后边的字符串(或正则)进行匹配,根据一定的规则选择走哪个locationlocation作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配匹配成功即进行相关的操作。 一个server可以有多个location配置, 多个location的优先级该如何区分? location语法 = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。 ~ 开头表示区分大小写的正则匹配 ~* 开头表示不区分大小写的正则匹配 !~... Nginx location命令匹配规则准备知识location 匹配命令 ~ #波浪线,表示执行一个正则匹配,区分大小写 ~* #波浪线+星号,表示执行一个正则匹配,不区分大小写 ^~ #^~,表示普通字符匹配,若符合当前匹配,则只匹配当前项,不继续匹配别的选项 = #普通字符精准匹配 @ #“@”定义一个命名location,使用在内部定向时 locationnginx的启动方式、负载均衡、动静分离、nginx代理vue项目、alias和root的区别、nginxlocation结尾的"/". proxy_pass结尾加/的区别 上述案例我们讲解到了需要重定向跳转的问题,上述案例中可以看到我们重定向后地址栏的地址也发生了变化,这实际上也暴露了一些后台服务的地址信息,如果我们想地址不变化,内容进行转发即可,要怎么实现呢?这就需要详细学习nginx 重定向的内容,下一章我们将针对这块内容继续攻克。 = 对uri 做精确匹配,优先级最高。 ^~ 对uri【起始字符】,做字符串匹配(注意不是正则匹配),区分大小写,以匹配长度为优先,表示普通字符匹配。使用前缀匹配nginxlocation写法中实现模糊匹配 如下规则匹配以/test开头的url,如http://ip:port/test.html,http://ip:port/test2.php等 location ~ /test { root /u01/soft/UCMSServer/tomcat/webapps;