网站首页 > 技术教程 正文
概述: 在nginx中,匹配分很多情形,例如:区分大小写匹配、不区分大小写匹配、有强匹配开头、有模糊匹配某些字符、有匹配后重写动作、有匹配反向代理动作、有匹配后终止操作、还有匹配全局变量类型等等,在很多情形中,匹配动作也存在优先策略,来看看下面的案例。
案例一、
server {
......
............
location ~ .*.(jpg|png)$ {
root /opt/nginxtest;
expires 1d;
#deny all;
}
}
说明:
1、以上location匹配了所有jpg与png文件,如果该location中没有指定root,将继承server段中的root配置,如果有指定root,location中的root优先;
2、location中无论有没有指定root ,deny all如果启用,将优先生效,由此可判断,只要类型为jpg与png文件,必定会进入此location中;
案例二、
server {......
............
location ~ ^/upload/.*.(jpg|png)$ {
rewrite ^/upload/(.*).png /test/upload/d1/$1.png permanent;
#root /opt/nginxtest/d1;
}
}
说明:
1、此规则限定与强匹配了$host 的/后,以upload开头,并且请求类型为jpg与png结尾的文件;
2、执行重写,强匹配以上1规则后进入rewrite , 例如http//$host/upload/1/123.png 将会到http//$host/test/upload/d1/1/123.png ;
3、如果该location中没有指定root,将继承server段中的root配置,如果有指定root,location中的root优先;
案例三、
server {......
............
location ~ /(upload|test)/.*.(jpg|png)$ {
rewrite ^/upload/(.*).jpg /d1/$1.jpg permanent;
rewrite /upload/(.*).png /d1/$1.png permanent;
#root /opt/nginxtest/d1;
}
}
说明:
1、此规则模糊匹配$uri,请求中包含upload或test即可继续执行,并且请求类型为jpg与png结尾的文件;
2、执行重写,匹配以上1规则后进入rewrite , 但需要注意,此处jpg与png类型不同,并且jpg中是强匹配^/,而png是模糊匹配,例如:http//$host/upload/1/123.png 将会到http//$host/d1/1/123.png ;例如:http//$host/test/upload/1/123.jpg 将会到 /opt/nginxtest/test/d1/121.png拿取文件;
3、而http//$host/test/d1/121.png的请求会直接拿取/opt/nginxtest/test/d1/121.png文件,因为此location虽然进来了,但没有匹配到重写规则,还是一样,如果该location中没有指定root,将继承server段中的root配置,如果有指定root,location中的root优先;
案例四、
server {......
............
location ~ /upload/.*.(gif|jpeg)$ {
if ( $request_uri ~* "myid" ) {
rewrite ^/upload/(.*).jpeg$ /jpeg/$1.jpeg permanent;
}
#deny all;
#root /opt/nginxtest/d1;
}
}
说明:
1、此规则模糊匹配$uri,请求中包含只要upload,并且请求类型为jpg与png结尾的文件即可继续执行;
2、执行重写,匹配以上1规则后进入判断$request_uri 和执行rewrite , 注意jpeg中是强匹配^/ 接upload, 且 $request_uri 带有“myid” , 则rewrite , 例如: http//$host/upload/1/123.jpeg?myid=123 将会到 http//$host/jpeg/1/123.jpeg?myid=123 ; 例如 http//$host/upload/1/123.jpeg 将会直接拿取/opt/nginxtest/upload/1/121.png文件,注意,如果此location中指定了root则取此root,如果没有则取server段中的root;
3、此location中,如果$request_uri 匹配,则优先rewrite , 同时启用deny all , root ,则deny 生效;
猜你喜欢
- 2024-09-12 Nginx多端适配(nginx 多个conf配置)
- 2024-09-12 使用Nginx实现动静分离(nginx处理动态还是静态)
- 2024-09-12 蓝易云 - Nginx 设置禁用 OPTIONS 请求以及允许跨域教程!
- 2024-09-12 java工程师进阶:nginx 反向代理和负载均衡策略实战案例
- 2024-09-12 Nginx 备忘录 - 04. 反向代理与负载均衡
- 2024-09-12 如何配置Nginx使其变成高性能服务器
- 2024-09-12 有时候你的Nginx代理也许就差一个JS脚本
- 2024-09-12 nginx下或(or)和与(and)运算,案例解析
- 2024-09-12 NGINX实现IF语句里的AND,OR多重判断
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)