需求:
淘宝的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。 谢谢。
分享到:
相关推荐
3. **使用`include`指令**:在主配置文件`nginx.conf`中,使用`include`指令引入各个环境的配置。例如: ```nginx http { include /etc/nginx/conf.d/*.conf; } ``` 这行代码会将`conf.d`目录下的所有`.conf`...
include /etc/nginx/redirect.map; } map 指令支持引入一个映射文件的方式,这里 redirect.map 文件内容格式如下: ~^/page/mordern-php$ /page/modern-php; 目前只添加了一行作为测试,前面可以是正则表达式,...
3. **启动与测试**: - 启动Nginx服务:`sudo service nginx start` - 检查配置是否正确:`sudo nginx -t` - 重启服务以使配置生效:`sudo service nginx restart` #### Nginx作为Web服务器 Nginx不仅可以作为...
其中,`include`指令可以引入其他配置文件,如MIME类型定义或默认错误页配置。 2. **server块**:每个`server`块代表一个虚拟主机,可以监听不同的IP地址和端口。在此块中,可以定义服务器名称、监听端口、错误日志...
7. **测试和监控**:使用`nginx -t`检查配置文件的语法,`nginx -s reload`重新加载配置,`systemctl status nginx`查看服务状态。 Nginx的强大在于其灵活性和模块化设计。你可以通过添加或修改配置文件中的指令,...
include fastcgi_params; } ``` #### 四、配置 PHP 1. **修改 php.ini 文件** - 将 `C:\Soft\WNMP\php-7.1.17-Win32-VC14-x64/php.ini-development` 文件复制一份并重命名为 `php.ini`。 - 修改 `extension_...
- include指令:引入其他配置文件。 - sendfile指令:是否启用高效文件传输模式。 - keepalive_timeout指令:设置保持连接的超时时间。 - gzip指令:启用或者禁用gzip压缩。 四、Nginx配置实例 - 配置监听80端口的...
配置完成后,记得测试配置文件的语法正确性并重启Nginx服务: ```bash sudo nginx -t sudo systemctl restart nginx ``` 这就是Nginx的基本安装和配置流程。通过灵活的配置,Nginx可以胜任多种Web服务场景,包括...
对于更高级的配置,如SSL/TLS支持、反向代理、负载均衡等,你需要在Nginx配置文件中添加相应的指令。例如,为实现HTTPS,你需要获取SSL证书,并在服务器块中添加如下内容: ```nginx server { listen 443 ssl; ...
3. **配置 Nginx**:在 Nginx 的配置文件(通常为 `/etc/nginx/nginx.conf` 或 `/usr/local/nginx/conf/nginx.conf`)中,需添加或修改 server 块,设置 location 指令以处理 PHP 文件,如: ``` location ~ \.php...
在完成以上步骤后,重启Nginx和PHP-FPM服务,测试配置是否成功。在浏览器中访问Nginx服务器的地址,如果能正确显示PHP的欢迎页面,说明配置成功。 总的来说,配置Windows上的Nginx+PHP环境需要对Web服务器和脚本...
将`server_include_common`替换为`server_include_common54`,并在`server_include_common54`中,将`fastcgi_pass`指令指向正确的`php-fpm`服务端口(例如,从`127.0.0.1:9000`改为`127.0.0.1:9004`)。 ### 4. ...
6. **测试配置**: 使用`nginx -t`命令检查配置文件是否有语法错误: ```bash sudo nginx -t ``` 以上就是Nginx中配置伪静态的基本流程。需要注意的是,不同动态程序可能需要调整对应的规则,例如对于ASP.NET,...
- 使用 `nginx -t` 测试配置文件有效性。 - 定期更新版本和补丁。 #### 17. Nginx 构建安全站点 HTTPS 架构 HTTPS 通过 SSL/TLS 协议加密数据传输,增强了网站的安全性。 - **配置 SSL**: - 获取 SSL 证书。 ...
5. **配置文件**:在 Nginx 的配置文件(如 `nginx.conf`)中,添加 FLV 模块的配置指令,例如: ``` http { ... server { ... location /live { flv_live on; flv_last_key_frame_cache_size 1000; ... }...
Nginx是一款高性能的HTTP和反向代理服务器,常用于网站的负载均衡和静态资源处理。...以上就是Nginx的基本安装、配置及其主要配置指令的详解。通过熟练掌握这些知识,你将能够有效地部署和管理Nginx服务器。
- `nginx -t`: 测试配置文件的语法是否正确。 - `nginx -s stop`: 强制停止 Nginx。 - `nginx -s quit`: 平滑停止 Nginx,等待所有连接关闭后再退出。 #### 三、Nginx 常见问题及解决方法 **3.1 Nginx 启动失败** ...
1. **编辑配置文件:** 打开`conf/nginx.conf`配置文件,同时也要注意包括通过`include`指令引入的所有子配置文件。 2. **配置`access_log`指令:** 在`http`上下文中添加`access_log`指令,例如: ```nginx ...
- **测试配置文件**:`nginx -t -c /path/to/nginx.conf` - **其他控制指令**: - `nginx -s stop`:立即停止运行中的NGINX进程。 - `nginx -s quit`:平滑地关闭NGINX进程。 - `nginx -s reload`:重新加载配置...