当前位置:首页 > 技术文章 > 正文内容

一文说清nginx规则匹配(含案例分析)

arlanguage5个月前 (12-12)技术文章38


概述: 在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 生效;

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/125.html

标签: nginx if 数字
分享给朋友:

“一文说清nginx规则匹配(含案例分析)” 的相关文章

记Nginx开启网站Https

一、前言loang loang ago,在前后端分离之后,这个项目一直都是采用的http,并且有打算说是配置Https。拖了那么久终于在前阵子完成了,在这里做一个简要的记录。二、SSL证书2.1、什么是SSL证书开启Https是数字证书的一种,由受信任的数字证书机构颁发。在服务器配置了SSL之后其访...

一次说清-Nginx反向代理及参数配置

我们在配置服务时常常会用到Nginx来设置反向代理,虽然常用,但是我们真的了解各个参数的意思吗?不如我们一起来看下吧。1、反向代理反向代理(reverse proxy)方式是指用代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络中的上游服务器,并将从上游服务器上得到的结果返回给I...

nginx监控与调优(三)

nginx监控通常有两种方法:一是status监控;二是ngxtop监控。一、status监控使用status监控的步骤:1.确定nginx中status模块是否已安装[root@localhost sbin]# nginx -V nginx version: nginx/1.13.7 built...

nginx出现大量499响应码怎么办?

一、问题现象监控发现Nginx服务日志中出现较多的499状态码,499状态码在Nginx中代表的是客户端在服务端返回之前主动断开了连接,由于客户端设置的超时时间为2s,故到达2s未收到服务端响应客户端主动断开了连接造成了499响应码。二、可能的故障点服务器的问题,例如CPU使用率高,队列堵塞,导致无...

Nginx安全相关配置常用教程 nginx安全策略

1. 限制请求速度设置 Nginx、Nginx Plus 的连接请求在一个真实用户请求的合理范围内。比如,如果你觉得一个正常用户每两秒可以请求一次登录页面,你就可以设置 Nginx 每两秒钟接收一个客户端 IP 的请求(大约等同于每分钟30个请求)。limit_req_zone $binary_re...

Linux这17个操作技巧是每个运维工程师应知必会的吧?

今天跟大家分享17个linux运维中常用的操作技巧!掌握好这些技巧,或许某一天能够让老板给你涨工资!1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录:find . -name “*.tar” -exec mv {}./backup/ ;?注解:find –name 主要用于查找某个文件名...