nginx可以在配置文件中对连接进行判断,已达到防止rewrite、盗链、对静态资源设置缓存以及浏览器限制等目的:

字符串表达式支持正则表达式,能设定大小写是否敏感。

1.~为区分大小写的匹配。
2.~*不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)。
3.!~和!~*意为“不匹配的”。

1: 限制某些类型的客户端的访问
if指令
所有的Nginx内置变量都可以通过if指令和正则表达式来进行匹配

location / {
if ($http_user_agent ~ MSIE) {
return 503;
}
}

#限制IE访问

如果把MSIE改成 Mozilla 就基本上把IE和firefox这样pc浏览器限制了

针对防止盗链一般常用一下两种方式:

1.针对不同的文件类型

location ~ .*.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {
     if ($http_referer ~* jjf.com) {
     #rewrite ^/ http://www.jjf.com/403.html;
     return 403;
      }
}

2.针对不同的目录

文件及目录匹配

-f和!-f用来判断是否存在文件

-d和!-d用来判断是否存在目录

-e和!-e用来判断是否存在文件或目录

-x和!-x用来判断文件是否可执行

例:

location = /

#匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配

location ^~ /images/ {

# 匹配任何已/images/开头的任何查询并且停止搜索。任何正则表达式将不会被测试。

location ~* .(gif|jpg|jpeg)$ {

# 匹配任何已.gif、.jpg 或 .jpeg 结尾的请求

常用标示符详解:

~ 区分大小写匹配

~* 不区分大小写匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

^ 以什么开头的匹配

$ 以什么结尾的匹配

转义字符。可以转. * ?等

* 代表任意字符

注:^~ 标识符后面跟一个字符串。Nginx将在这个字符串匹配后停止进行正则表达式的匹配(location指令中正则表达式的匹配的结果优先使用),如:location ^~ /images/,你希望对/images/这个目录进行一些特别的操作,如增加expires头,防盗链等,但是你又想把除了这个目录的图片外的所有图片只进行增加expires头的操作,这个操作可能会用到另外一个location,例如:location ~* .(gif|jpg|jpeg)$,这样,如果有请求/images/1.jpg,nginx如何决定去进行哪个location中的操作呢?结果取决于标识符^~,如果你这样写:location /images/,这样nginx会将1.jpg匹配到location ~* .(gif|jpg|jpeg)$这个location中,这并不是你需要的结果,而增加了^~这个标识符后,它在匹配了/images/这个字符串后就停止搜索其它带正则的location。

2.= 表示精确的查找地址,

如location = /它只会匹配uri为/的请求,如果请求为/index.html,将查找另外的location,而不会匹配这个,当然可以写两个location,location = /和location /,这样/index.html将匹配到后者,如果你的站点对/的请求量较大,可以使用这个方法来加快请求的响应速度。

3.@ 表示为一个location进行命名,即自定义一个location,这个location不能被外界所访问,只能用于Nginx产生的子请求,主要为error_page和try_files。
注意,这3个标识符后面不能跟正则表达式,虽然配置文件检查会通过,而且没有任何警告,但是他们并不会进行匹配。
综上所述,location指令对于后面值的匹配顺序为:

1.标识符“=”的location会最先进行匹配,如果请求uri匹配这个location,将对请求使用这个location的配置。
2.进行字符串匹配,如果匹配到的location有^~这个标识符,匹配停止返回这个location的配置。
3.按照配置文件中定义的顺序进行正则表达式匹配。最早匹配的location将返回里面的配置。
4.如果正则表达式能够匹配到请求的uri,将使用这个正则对应的location,如果没有,则使用第二条匹配的结果。

nginx 学习笔记--Nginx正则表达式之匹配操作符相关推荐

  1. 【005】Nginx学习笔记-Nginx真实IP

    [005]Nginx学习笔记-Nginx真实IP 真实IP 客户端真实IP 深入理解真实IP 实验一 实验二: 多个代理服务器的情况 实验三:利用realip模块获取客户端真实IP 实验四:伪装请求头 ...

  2. Python学习笔记 - 探索正则表达式标志匹配

    大家好,我是Mr数据杨,今天我们要一起探索正则表达式re的功能.就像在<三国演义>中,谋士们如何运用智谋指挥千军万马,我们也可以用re功能指挥文字舞动. 正则表达式可以帮助我们匹配不区分大 ...

  3. Nginx正则表达式之匹配操作符详解

    2019独角兽企业重金招聘Python工程师标准>>> Nginx正则表达式之匹配操作符详解 nginx可以在配置文件中对某些内置变量进行判断,从而实现某些功能.例如:防止rewri ...

  4. nginx 学习笔记(2) nginx新手入门

    这篇手册简单介绍了nginx,并提供了一些可以操作的简单的工作.前提是nginx已经被安装到你的服务器上.如果没有安装,请阅读上篇:nginx 学习笔记(1) nginx安装.这篇手册主要内容:1. ...

  5. Nginx学习笔记09——URLRewrite伪静态

    URLRewrite 伪静态配置 因为jsp获取url参数很方便,所以需要将tomcat服务器上的index.html转为jsp格式的,方式是在html文件开头加上<%@ page conten ...

  6. Nginx 学习笔记

    Nginx 学习笔记 文章目录 Nginx 学习笔记 1.Nginx 的简介 1.1正向代理 1.2反向代理 1.3负载均衡 1.4动静分离 1.5Nginx的安装 1.6Nginx的常用命令 1.7 ...

  7. nginx学习笔记-01nginx入门,环境搭建,常见命令

    nginx学习笔记-01nginx入门,环境搭建,常见命令 文章目录 nginx学习笔记-01nginx入门,环境搭建,常见命令 1.nginx的基本概念 2.nginx的安装,常用命令和配置文件 3 ...

  8. Nginx学习笔记3:Shell脚本检测Nginx服务状态

    前言 nginx 服务启动后,我们需要对其服务状态进行监控,今天学习过程中了解到一段非常有用的小脚本,不仅可以监控Nginx,也可以用来监控其他服务 脚本 A=`ps -C nginx –no-hea ...

  9. 全是精髓!也许是最完美的“Nginx学习笔记”了,阿里云高工“365”天手写!

    前言 "Nginx",一个高性能的HTTP和反向代理web服务器,Nginx因为内存少.并发能力强的特性,深受虚拟机主机提供商的欢迎,可以支持高达50000个并发连接数的响应.Ng ...

最新文章

  1. mongoose手动生成ObjectId
  2. 设计上如何避免EMC问题
  3. iOS - LocalCache 本地数据缓存
  4. 进阶学习js中的执行上下文
  5. Matrix响应式软件应用类型博客模板
  6. spring aop 必须的包 及里面用到的东西_学习Spring的思考框架
  7. python基础语法手册-python语法大全,python语法手册
  8. 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定...
  9. HDU 6706 huntian oy(杜教筛 + 一些定理)题解
  10. 发电机机房设计规范_柴油发电机房设计规范.docx
  11. Learning to Fuse Asymmetric Feature Maps in Siamese Trackers 论文与代码笔记
  12. 小米MIX 2还没上一代震撼,为什么却说雷军更自信了?
  13. 知道Unicode表的数字,怎么用java推出相对应的日文?
  14. mysql不包含模糊查询
  15. Spring Boot入门教程(五十三): 极光推送Java-SDK
  16. 【面试题】十进制怎么转化为十五进制
  17. python爬取微博用户信息(六)—— 完整代码
  18. 一直以来伴随我的一些学习习惯(part2)
  19. 投放渠道不了解广告怎么投
  20. 压电雨量传感器工作原理介绍

热门文章

  1. 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛前十题(能力有限)
  2. Java操作linux脚本
  3. RT-thread之RTC时间的获取
  4. 电视服务器无响应1500,你家的电视盒子直播总是卡,解决方法全都在这里
  5. PI控制器从连续域到z域到差分方程
  6. AI智能机器人,在这里也可以体验~
  7. PC端品优购注册页面 resgister.css以及web服务器学习
  8. 【OpenCV】OpenCV基础教程(9)—— 傅里叶变换
  9. 泛函,变分,欧拉-拉格朗日方程
  10. python自动化办公教程书籍_盘点使用Python进行自动化办公所需要的知识点