自定义行为 ( Custom Action )

匹配器 (Matcher)

匹配器

VeryNginx 会收到各种各样的Http请求,当我们定义一条规则(Action)的时候,我们可能会需要限定,这条规则只对一部分请求起作用,Matcher 就是匹配器,用来描述哪一部分 Http 请求是规则的目标。

一个 Matcher 可以包含一个或者多个约束条件,当某个请求没有违背 Matcher 中任何一条约束时,就认为这个请求匹配上了这个Matcher。

如果Matcher是空的,即没有包含任何条件,那么这个Matcher会匹配上所有的请求

目前支持以下几种约束:

Client IP

客户端IP,对应Nginx变量 remote_addr

支持的匹配方式:

  • 等于某个IP
  • 不等于某个IP

Host

客户访问时使用的域名,对应Nginx变量 host

支持的匹配方式:

  • 等于某个字符串
  • 不等于某个字符串
  • 符合某个正则表达式
  • 不符合某个正则表达式

UserAgent

用户浏览器的UserAgent字段,对应Nginx变量 http_user_agent

一些通过工具发起的请求可能会有特别的UserAgent,或者没有这个字段,也可能伪造成普通的浏览器

支持的匹配方式:

  • 等于某个字符串
  • 不等于某个字符串
  • 符合某个正则表达式
  • 不符合某个正则表达式
  • 为空,即Http头中没有这个字段

URI

请求路径,对应Nginx中的变量 uri ,表示访问地址中域名之后的部分

例如访问 http://www.abc.com/test/book.html 时,uri值为 /test/book.html

支持的匹配方式:

  • 等于某个字符串
  • 不等于某个字符串
  • 符合某个正则表达式
  • 不符合某个正则表达式

Referer

请求来源网页,对应Nginx中的变量 http_referer ,表示访问者的来源页面。

支持的匹配方式:

  • 等于某个字符串
  • 不等于某个字符串
  • 符合某个正则表达式
  • 不符合某个正则表达式
  • 为空,即Http头中没有这个字段

Request Args

请求参数匹配

VeryNginx可以智能的从uri字符串后面,以及请求体(body)内提取参数的值

注:目前只支持在请求的content-type为application/x-www-form-urlencoded时,从请求体内提取参数

这个条件可以输入两个字段,name 和 value。name是可选的,如果输入name,则只把符合name条件的参数值和value作匹配;如果不输入name,就会把所有的参数值拿来和value进行匹配

支持的匹配方式:

  • 等于某个字符串
  • 不等于某个字符串
  • 符合某个正则表达式
  • 不符合某个正则表达式

行为 (Action)

协议锁定 CustomAction: Scheme Lock

功能介绍

协议锁定功能可以确保用户访问时使用正确的协议 ( Http / Https )

背景知识

Matcher

配置说明

可以定义多条规则,每条规则包含以下参数

  • Enable
  • Matcher
  • Scheme

执行过程

寻找规则

每收到一个请求,VeryNginx将按照从上到下(序号递增)的顺序,取每一条规则的 Matcher 进行匹配测试,当找到第一个符合的Matcher时,即由这一条规则进行处理,停止后续匹配

应用规则

当Http请求使用的访问协议和规则中的 scheme 项不一致时,将自动返回一个302重定向,将浏览器重定向到正确的协议 + 当前的地址上。如果使用和规则一致的协议来访问,则不会有任何动作

注意事项

  • 注意规则的顺序,防止一个严格的 Matcher 被排名更前的宽松 Matcher 覆盖,导致规则不起作用
  • 如果服务器有向外提供Api的话,需要特别注意和Api的兼容性,通常来说Api的调用方不是真正的浏览器,很可能不支持302重定向

重定向 CustomAction: Redirect

功能介绍

Redirect可以将一个请求重定向到另外一个地址

背景知识

Matcher

配置说明

可以定义多条规则,每条规则包含以下参数

  • Enable
  • Matcher
  • RegEx
  • Redirect to

执行过程

寻找规则

每收到一个请求,VeryNginx将按照从上到下(序号递增)的顺序,取每一条规则的 Matcher 进行匹配测试,当找到第一个符合的Matcher时,即由这一条规则进行处理,停止后续匹配

应用规则

当 Regex 项为空时, 请求将被重定向到Redirect to 项填写的地址。 当 Regex 项不为空时,新地址由gsub算法生成:

new_address = gsub( uri, re,redirect_to )

其中 re 为规则中定义的Regex,redirect_to 为规则中定义的 Redirect to 项目

注意事项

  • Redirect to 项可以是以下两种形式
  1. 带有协议以及域名 (http/https)

    VeryNginx详细配置说明的更多相关文章

    1. jQuery插件jqplot的详细配置说明和渲染器

      jQuery插件jqplot的详细配置说明和渲染器 (2012-08-23 08:57:42) 转载▼ 标签: jqplot 详细配置 渲染器 it 分类: 技术类 jQuery.jqplot插件的官 ...

    2. Linux下的sudo及其配置文件/etc/sudoers的详细配置说明

      http://www.osedu.net/article/linux/2011-01-03/178.html Linux下的sudo及其配置文件/etc/sudoers的详细配置说明 1.sudo介绍 ...

    3. C3P0的详细配置说明

      C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSourc ...

    4. Rsync 详细配置说明

      rsync是类unix系统下的数据镜像备份工具. 它的特性如下:可以镜像保存整个目录树和文件系统.可以很容易做到保持原来文件的权限.时间.软硬链接等等.无须特殊权限即可安装.快速:第一次同步时 rsy ...

    5. log4j.properties 日志文件的详细配置说明

      一.在一个web 项目中,使用tomcat 启动通常会在控制台输出出现一个警告信息: 通常为未添加 log4j.properties文件的原因. 二.下面以一个普通的maven项目为例说明一下 1. ...

    6. ECharts雷达图详细配置说明

      雷达图表配置说明: // 指定图表的配置项和数据 var option = { backgroundColor: 'rgba(204,204,204,0.7 )', // 背景色,默认无背景 rgba ...

    7. nagios安装部署及详细配置说明(转)

      一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...

    8. log4net详细配置说明

      原文地址:http://blog.sina.com.cn/s/blog_671486bc01011rdj.html 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记 ...

    9. node.js在windows下的学习笔记(7)---express的app.js的详细配置说明

      var express = require('express'); var path = require('path'); var favicon = require('serve-favicon') ...

    随机推荐

    1. BZOJ 1920 Luogu P4217 [CTSC2010]产品销售 (模拟费用流、线段树)

      题目链接 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=1920 (luogu) https://www.luogu.org/prob ...

    2. Unity3D_(游戏)贪吃蛇

      Unity制作贪吃蛇小游戏 玩家通过“WASD”控制小蛇上下左右移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束 可通 ...

    3. Android Studio基本使用

      1.    创建Android项目 1)    Application name:应用名称,launcher界面显示的 2)    Company Domain:公司域名(sprd.com) 3)   ...

    4. C++入门经典-例5.3例5.4-输出int指针运算后的地址值

      1:代码如下: // 5.3.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

    5. 第七周课程总结&实验报告五

      实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实验要求 掌握使用抽象类的方法. 掌握使用系统接口的技术和创建自定义接口的方法. 了解 Java 系统包的结构. ...

    6. Git:本地项目与远程仓库的git/clone

        版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_40197828/article/details/79283278 初识Git命令行将本地项 ...

    7. spark MLlib 概念 5: 余弦相似度(Cosine similarity)

      概述: 余弦相似度 是对两个向量相似度的描述,表现为两个向量的夹角的余弦值.当方向相同时(调度为0),余弦值为1,标识强相关:当相互垂直时(在线性代数里,两个维度垂直意味着他们相互独立),余弦值为0, ...

    8. Parcelable和Serializable

      本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存 ...

    9. Mysql的BTREE和HASH索引

      建议默认使用BTree索引,如果时间太长,可以尝试HAST索引,但限制如下: 不支持between and 只支持 = IN <> 不支持范围查询如between and和like. 无法 ...

    10. Python中常见的异常总结

      Python中常见的异常总结 当Python检测到一个错误时,解释器就会指出当前流已经无法继续执行下去,这时候就出现了异常. 一.异常错误    a.语法错误     错误一:     if     ...