Nginx_location的匹配规则的使用方法与实例

一 Nginx的location语法

  location [=|——|——*|^——] /uri/ { … }

  =         严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求

  ——         区分大小写匹配(可用正则表达式)

  ——*       不区分大小写匹配(可用正则表达式)

  !——       区分大小写不匹配

  !——*     不区分大小写不匹配

  ^——      如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式

  示例1:

  location  / { }

  匹配任意请求

  示例2:

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

  rewrite .(gif|jpg|jpeg)$ /logo.png;

  }

  不区分大小写匹配任何以gif、jpg、jpeg结尾的请求,并将该请求重定向到 /logo.png请求

  示例3:

  location —— ^.+\.txt$ {

  root /usr/local/nginx/html/;

  }

  区分大小写匹配以.txt结尾的请求,并设置此location的路径是/usr/local/nginx/html/。也就是以.txt结尾的请求将访问/usr/local/nginx/html/ 路径下的txt文件

二 alias与root的区别

  root    实际访问文件路径会拼接URL中的路径

  alias   实际访问文件路径不会拼接URL中的路径

  示例如下:

  location ^—— /sta/ {

  alias /usr/local/nginx/html/static/;

  }

  请求:http://test.com/sta/sta1.html

  实际访问:/usr/local/nginx/html/static/sta1.html 文件

  location ^—— /tea/ {

  root /usr/local/nginx/html/;

  }

  请求:http://test.com/tea/tea1.html

  实际访问:/usr/local/nginx/html/tea/tea1.html 文件

三 last 和 break关键字的区别

  (1)last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异

  (2)last 和 break 当出现在location 内部时:

  last        使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚才的行为

  break    使用了break 指令,rewrite后不会跳出location 作用域,它的生命也在这个location中终结

四 permanent 和 redirect关键字的区别

  rewrite … permanent   永久性重定向,请求日志中的状态码为301

  rewrite … redirect         临时重定向,请求日志中的状态码为302

五 综合实例

  将符合某个正则表达式的URL重定向到一个固定页面

  比如:我们需要将符合“/test/(\d+)/[\w-\.]+” 这个正则表达式的URL重定向到一个固定的页面。符合这个正则表达式的页面可能是:http://test.com/test/12345/abc122.html、http://test.com/test/456/11111cccc.js等FTP

  从上面的介绍可以看出,这里可以使用rewrite重定向或者alias关键字来达到我们的目的。因此,这里可以这样做:

  (1)使用rewrite关键字:

  location —— ^.+\.txt$ {

  root /usr/local/nginx/html/;

  }

  location ——* ^/test/(\d+)/[\w-\.]+$ {

  rewrite ^/test/(\d+)/[\w-\.]+$ /testpage.txt last;

  }

  这里将所有符合条件的URL(PS:不区分大小写)都重定向到/testpage.txt请求,也就是 /usr/local/nginx/html/testpage.txt 文件

  (2)使用alias关键字:

  location ——* ^/test/(\d+)/[\w-\.]+$ {

  alias /usr/local/nginx/html/static/sta1.html;

  }

  这里将所有符合条件的URL(PS:不区分大小写)都重定向到/usr/local/nginx/html/static/sta1.html 文件

原文地址:https://www.cnblogs.com/03ngnntds/p/10254735.html

时间: 2024-08-01 18:53:37

Nginx_location的匹配规则的使用方法与实例的相关文章

【转】正则表达式的匹配规则

转自http://www.cnblogs.com/xiaohuochai/p/5608807.html 元字符 大部分字符在正则表达式中,就是字面的含义,比如/a/匹配a,/b/匹配b /dog/.test("old dog") // true 但还有一些字符,它们除了字面意思外,还有着特殊的含义,这些字符就是元字符 在javascript中,共有14个元字符(meta-character) () [] {} \ ^ $ | ? * + . 元字符 名称 匹配对象 . 点号 单个任意字

JavaScript中正则表达式判断匹配规则以及常用的方法

JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了. \d可以匹配一个数字                 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010' \w可以匹配一个字母或数字      '\w\w'可以匹配'js' \s可

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

Nginx之location 匹配规则详解

Nginx之location 匹配规则详解 关于一些对location认识的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是"先匹配普通,再匹配正则".我这么说,大家一定会反驳我,因为按"先匹配普通,再匹配正则"解释不了大家平时习惯的按"先匹配正则,再匹配普通"的实践经验.这里我只能暂时解释下,造成这种误解的原因是:正则匹配会覆盖普通匹配(实际的规则,比这复杂,

Android中IntentFilter匹配规则详解——Android开发艺术探索笔记

欢迎转载,转载请注明出处http://blog.csdn.net/l664675249/article/details/50640288 启动Activity的方式分为两种,显示和隐式调用.显示调用很简单,直接指明要启动的Activity就可以了,这里主要介绍一下隐式调用.隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息.只有一个Intent同时匹配action,category和data才算匹配成功. 示例 <intent-filter> <acti

Android启动模式以及IntentFilter匹配规则

一.Android的LaunchMode 共有四种启动模式 1.standard 标准启动模式,Activity的默认启动模式.Activity的每次启动都创建新的示例 2.singleTop 栈顶复用模式,当启动的Activity处于栈顶时,不再创建新的活动实例.将回调onNewIntent方法. 3.singleTask 栈内复用模式,当启动的Activity在一个栈中存在实例,不再创建新的实例,弹出在其之上的所有实例将其置于栈顶.同样会回调onNewIntent方法. 4.singleIn

正则表达式 - 匹配规则

正则表达式 - 匹配规则 基本模式匹配 一切从最基本的开始.模式,是正规表达式最基本的元素,它们是一组描述字符串特征的字符.模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符.重复出现,或表示上下文.例如: ^once 这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串.例如该模式与字符串"once upon a time"匹配,与"There once was a man from NewYork"不匹配

你必须弄懂的Intent Filter匹配规则

Intent简介 Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互.因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦.在SDK中给出了I

对整站的a链接进行监控,对匹配规则进行指定页面的跳转

项目中有个需求,就是将非本站的链接跳转到过渡页(提示即将离开本站的那种页面).这个时候想起了腾讯邮箱,不安全链接会有新的页面提示,如下图: 本以为ASP.NET中有全局的方法获取到点击或者跳转的链接,结果也没找到.Request和Response都取不到的,HttpModule,HttpHandle,Global中也一样,毕竟跳转之后是到别人的网站上去了.不晓得IIS上能否监控的到.最后只能在a标签上加Onclick了.由于a标签的onclick要比href先执行,所以把a标签统一加上oncli