VeryNginx详细配置说明
自定义行为 ( 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
)
背景知识
配置说明
可以定义多条规则,每条规则包含以下参数
- Enable
- Matcher
- Scheme
执行过程
寻找规则
每收到一个请求,VeryNginx将按照从上到下(序号递增)的顺序,取每一条规则的 Matcher 进行匹配测试,当找到第一个符合的Matcher时,即由这一条规则进行处理,停止后续匹配
应用规则
当Http请求使用的访问协议和规则中的 scheme 项不一致时,将自动返回一个302重定向,将浏览器重定向到正确的协议 + 当前的地址上。如果使用和规则一致的协议来访问,则不会有任何动作
注意事项
- 注意规则的顺序,防止一个严格的 Matcher 被排名更前的宽松 Matcher 覆盖,导致规则不起作用
- 如果服务器有向外提供Api的话,需要特别注意和Api的兼容性,通常来说Api的调用方不是真正的浏览器,很可能不支持302重定向
重定向 CustomAction: Redirect
功能介绍
Redirect可以将一个请求重定向到另外一个地址
背景知识
配置说明
可以定义多条规则,每条规则包含以下参数
- 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 项可以是以下两种形式
- 带有协议以及域名 (http/https)
VeryNginx详细配置说明的更多相关文章
- jQuery插件jqplot的详细配置说明和渲染器
jQuery插件jqplot的详细配置说明和渲染器 (2012-08-23 08:57:42) 转载▼ 标签: jqplot 详细配置 渲染器 it 分类: 技术类 jQuery.jqplot插件的官 ...
- Linux下的sudo及其配置文件/etc/sudoers的详细配置说明
http://www.osedu.net/article/linux/2011-01-03/178.html Linux下的sudo及其配置文件/etc/sudoers的详细配置说明 1.sudo介绍 ...
- C3P0的详细配置说明
C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSourc ...
- Rsync 详细配置说明
rsync是类unix系统下的数据镜像备份工具. 它的特性如下:可以镜像保存整个目录树和文件系统.可以很容易做到保持原来文件的权限.时间.软硬链接等等.无须特殊权限即可安装.快速:第一次同步时 rsy ...
- log4j.properties 日志文件的详细配置说明
一.在一个web 项目中,使用tomcat 启动通常会在控制台输出出现一个警告信息: 通常为未添加 log4j.properties文件的原因. 二.下面以一个普通的maven项目为例说明一下 1. ...
- ECharts雷达图详细配置说明
雷达图表配置说明: // 指定图表的配置项和数据 var option = { backgroundColor: 'rgba(204,204,204,0.7 )', // 背景色,默认无背景 rgba ...
- nagios安装部署及详细配置说明(转)
一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...
- log4net详细配置说明
原文地址:http://blog.sina.com.cn/s/blog_671486bc01011rdj.html 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记 ...
- node.js在windows下的学习笔记(7)---express的app.js的详细配置说明
var express = require('express'); var path = require('path'); var favicon = require('serve-favicon') ...
随机推荐
- php的mysql语法
php操作mysqli(示例代码) 更新时间:2013年10月28日 :: 作者: 我要评论 关注脚本之家微信公众号(jb51net) 每周都有大礼相送哦 php操作mysqli的示例代码.需要的朋友 ...
- RedisTemplate与zset
Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有 ...
- C++入门经典-例5.7-调用自定义函数交换两变量值,传入指针
1:代码如下: // 5.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...
- C++入门经典-例4.3-函数的递归调用之汉诺塔问题
1:代码如下: // 4.3.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...
- 20175215 2018-2019-2 第五周java课程学习总结
第六章学习内容 1.接口 使用interface来定义一个接口. 接口体中包含常量的声明(没有变量)和抽象方法两部分.接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量的访问权限一定都是pu ...
- win7环境下mongodb分片和移除
本文主要介绍在一台win7电脑上模拟mongo分片.如果有多台服务器,可以将每个mongo部署在单台电脑上.我们将配置3个mongo分片,3个配置服务器,1个路由服务器.如下图所示进行配置,介绍如何增 ...
- PHP 页面中实现数据的增删改查
main页面(主页面) <table width="100%" border="1" cellpadding="0" cellspac ...
- day7_集合,深浅copy
一.集合 集合是无序的,不重复的数据集合,其元素为可哈希(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键).以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. 关系测试, ...
- vue问题一:触发接口
//在script中先引用 import api from './../../api/index' //vue文件方法中 写 del(index, row) { let self=this; // 传 ...
- kotlin之字符类型
kotlin语言中,字符类型用Char表示,与java区别在于,kotlin中字符不能直接看成数字,如下: java中: void check (char c){ if(c==97){ } } kot ...