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";也可以包含正则,这种...
什么是location?
nginx就是通过拦截到的请求去对配置好的location块(location block)进行请求代理的。被代理的URL去对location后边的字符串(或正则)进行匹配,根据一定的规则选择走哪个location。
location作用
location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。
一个server可以有多个location配置, 多个location的优先级该如何区分?
location语法
= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
!~...
Nginx location命令匹配规则准备知识location 匹配命令
~ #波浪线,表示执行一个正则匹配,区分大小写
~* #波浪线+星号,表示执行一个正则匹配,不区分大小写
^~ #^~,表示普通字符匹配,若符合当前匹配,则只匹配当前项,不继续匹配别的选项
= #普通字符精准匹配
@ #“@”定义一个命名location,使用在内部定向时
location 匹
nginx的启动方式、负载均衡、动静分离、nginx代理vue项目、alias和root的区别、nginx的location结尾的"/".
proxy_pass结尾加/的区别
上述案例我们讲解到了需要重定向跳转的问题,上述案例中可以看到我们重定向后地址栏的地址也发生了变化,这实际上也暴露了一些后台服务的地址信息,如果我们想地址不变化,内容进行转发即可,要怎么实现呢?这就需要详细学习nginx 重定向的内容,下一章我们将针对这块内容继续攻克。
= 对uri 做精确匹配,优先级最高。
^~ 对uri【起始字符】,做字符串匹配(注意不是正则匹配),区分大小写,以匹配长度为优先,表示普通字符匹配。使用前缀匹配。
nginx的location写法中实现模糊匹配
如下规则将匹配以/test开头的url,如http://ip:port/test.html,http://ip:port/test2.php等
location ~ /test {
root /u01/soft/UCMSServer/tomcat/webapps;