需求:
淘宝的Tengine服务器在1.0.1版本的时候对Include指令进行了增强:
Syntax: include file | *
Default:
no
使用此指令,可以包含任何你想要包含的配置文件,当配置文件include多个文件时按照字母或数字顺序进行包含。
如何通过功能/黑盒测试来验证include指令对多个文件是否确实按照字母或数字的顺序进行包含,成为需要解决的问题。
解决方案:(在此列举3个我个人整理的解决方法)
1. 比较笨的方法:在Tengine源码的main函数内添加检查语句,根据返回值的情况来判断include指令对多个文件的包含顺序;
2. 比较麻烦的方法:在Tengine编译的时候,加入第三方模块:ECHO模块。将ECHO模块的输出指令分别写入到不同的文件中,然后在配置文件中的相应的location内通过inlude指令对那些文件进行包含。
通过对Tengine的请求访问,验证返回的响应头内ECHO模块所输出的信息的顺序,以此来判断include指令对多个文件的包含顺序是否正确;
3. 比较容易的方法(这也是我所采用的测试方法):
首先需要了解Tengine(Nginx)的location匹配规则,在此仅介绍与本次相关的location正则匹配的规则,如需详细了解可参见Nginx官网wiki。
匹配规则是:按照正则location在配置文件中的物理顺序(编辑顺序)匹配的,并且只要匹配到一条正则location,就不再考虑后面的。
因此,我们可以利用Nginx location正则匹配的这个特点来进行测试。
案例一:
当配置文件内的location配置如下时:
location ~ /er.* {
error_page 404 /404_1.html;
}
location ~ /err.* {
error_page 404 /404_2.html;
}
访问url: http://serverip:port/error/pageNotExit;
返回: 404_1.html页面;
访问url: http://serverip:port/eroor/pageNotExit;
返回: 404_1.html页面;
案例二:
当配置文件内的location配置如下时:
location ~ /err.* {
error_page 404 /404_2.html;
}
location ~ /er.* {
error_page 404 /404_1.html;
}
访问url: http://serverip:port/error/pageNotExit;
返回: 404_2.html页面;
访问url: http://serverip:port/eroor/pageNotExit;
返回: 404_1.html页面;
因此,我们只需要在将这两个location配置写如不同的文件中:
文件名1.conf 写道
location ~ /er.* {
error_page 404 /404_2.html;
}
文件名2.conf 写道
location ~ /err.* {
error_page 404 /404_2.html;
}
然后在Tengine(Nginx)测试的配置文件中设置include指令:
server {
listen 8099;
server_name localhost;
include location/*.conf;
}
那么通过设计特定的url访问并检查返回结果就可以测试include指令对多个文件的包含顺序了。
ok, Nginx include指令的测试介绍完毕, 欢迎拍砖。转发请备注转自:100continue.iteye.com。 谢谢。
分享到:
相关推荐
主要介绍了Nginx Location 指令简明指南,本文讲解了它的基本语法、匹配过程、配置实例和全局变量,需要的朋友可以参考下
nginx四层代理测试 及SLB负载均衡功能配置测试
主要介绍了Nginx SSI指令配置详解,本文讲解了什么是SSI、为什么要用SSI、nginx配置SSI、页面上配置、配置示例等内容,需要的朋友可以参考下
nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求,我们应该牢记。下面这篇文章主要介绍了nginx利用referer指令实现防盗链配置的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
nginx后端健康检测模块,可自定义增加HTTP报头检测内容,用于检测后端服务器HTTP状态,适用于nginx的多个版本
Nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行。默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析,这将导致严重的安全问题,使得恶意的...
当有开发环境,测试环境,预发环境,配置nginx时。都在nginx.conf文件中配置,导致会发生配置混乱,不清晰,为了解决这个问题引入了多配置文件
3.4. nginx重要指令之location 4. nginx中的rewrite 4.1. 什么是rewrite 4.2. rewrite的命令的作用域和优先级 4.3. if指令 4.3.1. if指令的语法 4.3.2. if指令中使用的逻辑运算符 4.3.3. If指令中可以使用的...
《深入剖析Nginx》不是一本关于Nginx配置指令如何使用的介绍手册。《深入剖析Nginx》重点在于通过剖析Nginx的源代码,探究其功能结构及其内部实现原理。全书共14章和3个附录。首先介绍了开始剖析Nginx源代码前的准备...
1、ab 测试工具安装 2、wrk测试工具 1、系统和nginx是否可以建立多个socket连接 2、系统和nginx是否允许一次性打开多个文件 1、http连
awk测试从nginx查询qps的测试日志
Nginx应用案例分享:压力测试,Nginx测试,Nginx压力测试
include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:start nginx Cmd窗口会闪一下 进程里面会多了个 浏览器里面输入:...
nginx 离线安装包nginx 离线安装包
nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源
Nginx安装包Nginx安装包
nginx日志测试使用 access.log.zip
此数据为go语言收集nginx容器日志,测试数据,方便代码的测试。另外我还会在文章中放入自写的数据生成代码,方便数据的产生。
include /etc/nginx/redirect.map; } map 指令支持引入一个映射文件的方式,这里 redirect.map 文件内容格式如下: ~^/page/mordern-php$ /page/modern-php; 目前只添加了一行作为测试,前面可以是正则表达式,...