test-nginx 使用文档

本文介绍如何使用Perl模块Test::Nginx搭建Nginx的测试环境,并通过具体示例展示如何编写测试案例,包括配置nginx、发送HTTP请求及验证响应等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://segmentfault.com/a/1190000004359984

install
git clone https://github.com/agentzh/test-nginx.git
cd test-nginx & perl Makefile.PL
sudo make install

如果缺少包的话,可以通过 cpan 装;例如 装 Test:More

sudo perl -MCPAN -e shell
cpan[1]> install Test:LongString
geting started

文件目录组织:
一般是在一个项目下新建 t 目录来存放测试集
以lua-resty-redis 为例:https://github.com/agentzh/lua-resty-redis
有 Makefile ,test 选项里有重要的一句:
prove -I../test-nginx/lib -r t
这里有调用 perl 的 prove 指令,prove 会去执行测试
t 目录下有 很多个 .t 文件,里面就是测试案例
编写测试案例:

一个测试案例主要有三部分内容:
程序代码: nginx location 的配置内容
输入: http 的 request 信息
输出检查: status,header,body,error_log 检查

https://github.com/agentzh/lua-resty-redis/blob/master/t/sanity.t
还是以 lua-resty-redis 的一个为例,第 25 行之后的才是每个测试案例的内容
即完成一个测试案例里的那三项内容
=== Test 1:
— request 表示输入是 发一起 http GET 请求 /t
GET /t
— config 表示 nginx.conf 里 location /t 里的内容


— response_body 表示对 http 返回的 body 进行匹配检查
— no_error_log 表示会对 nginx 的 error.log 检查,必须没有 EORROR 级别的记录
更完成的输入,输出检查项 定义,可以看 https://github.com/agentzh/test-nginx/blob/master/lib/Test/Nginx/Socket.pm
1870 行之后有完整的文档
进一步解释, test-nginx 执行流程:

  1. 组装 nginx.conf,启动 nginx 实例进程根据我们在 Makefile 里配置的 PATH,和每一个 .t 文件最前面的一些配置项

会组装一个完整的 nginx.conf 文件把 t/servroot 当成 nginx 的工作目录,启动 nginx 实例

  1. 发起 http 请求,根据每个测试案例的提供的信息

  2. 检查 http 的返回项包括 http status,http response header, http response body

更多测试项:
etcproxy 可以在 tcp 层上做一个延时转发,模拟测试 bad 网络环境
valgrind 内存泄露检查
stap 检查; 调用 systemtap 做输出检查


<think>嗯,用户问的是如何安装fastdfs-nginx-module。首先,我需要回忆一下FastDFS和Nginx的关系。FastDFS是一个分布式文件系统,而fastdfs-nginx-module是它的一个扩展模块,用来让Nginx直接访问FastDFS中的文件,这样可以通过HTTP来提供文件服务。 接下来,我得考虑安装步骤的大致流程。通常,安装这类模块需要先安装FastDFS本身,然后再编译Nginx的时候加上这个模块。但可能用户已经安装了FastDFS和Nginx,或者需要从头开始安装。所以步骤应该包括依赖安装、下载源码、配置、编译安装等。 然后,我需要确认具体的步骤是否正确。比如,是否需要先安装FastDFS的依赖库,比如libfastcommon。然后下载fastdfs-nginx-module的源码,通常是从GitHub上获取。接着,在编译Nginx时,通过--add-module参数指定模块的路径。之后,还需要配置Nginx和FastDFS的相关配置文件,比如mod_fastdfs.conf,以及storage.conf中的HTTP设置。 另外,可能会遇到的一些常见问题,比如权限问题,路径是否正确,配置文件中的参数是否匹配tracker和storage的配置。还有,防火墙是否开放了相应的端口,比如80或者8080。此外,用户可能是在不同的Linux发行版上安装,可能需要调整包管理器的命令,比如CentOS用yum,Ubuntu用apt。 可能用户会遗漏的步骤包括:修改mod_fastdfs.conf中的tracker_server地址,或者没有正确设置storage的http.server_port,导致Nginx无法正确路由请求。此外,编译Nginx时,如果之前已经安装过Nginx,可能需要先卸载,或者备份原有配置,避免覆盖。 还要注意模块的版本兼容性,确保fastdfs-nginx-module的版本与FastDFS和Nginx的版本兼容。可能需要查阅官方文档或者社区的建议。另外,在启动Nginx之前,是否已经启动了FastDFS的tracker和storage服务,否则Nginx可能无法正常连接到后端。 最后,测试部分也很重要,用户可能需要通过上传文件到FastDFS,然后通过Nginx的URL访问来验证是否安装成功。如果出现403 Forbidden,可能是文件权限问题,或者路径配置错误。 现在需要把这些步骤整理成清晰的中文指南,分步骤说明,确保用户能一步步跟着操作,同时提醒常见的配置错误和解决方法。可能还需要给出示例配置片段,帮助用户正确修改配置文件。如果有必要,可以建议用户查看日志文件,比如Nginx的error.log或FastDFS的日志,来排查问题。</think>安装fastdfs-nginx-module需要与Nginx和FastDFS配合使用,以下是详细步骤: ----- ### 一、准备工作 1. **安装依赖** ```bash # CentOS yum install -y gcc pcre pcre-devel openssl openssl-devel zlib zlib-devel # Ubuntu apt-get install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev ``` 2. **下载源码** ```bash wget https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/tags/V1.22.tar.gz tar -zxvf V1.22.tar.gz ``` ----- ### 二、编译安装Nginx 1. **配置模块路径** ```bash ./configure \ --add-module=/path/to/fastdfs-nginx-module/src \ --with-http_ssl_module ``` 2. **编译并安装** ```bash make && make install ``` ----- ### 三、配置模块 1. **复制配置文件** ```bash cp /path/to/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ ``` 2. **修改关键配置** ```conf # /etc/fdfs/mod_fastdfs.conf tracker_server=your_tracker_ip:22122 url_have_group_name=true store_path0=/path/to/fastdfs/storage/data ``` ----- ### 四、Nginx服务配置 1. **添加server配置** ```nginx server { listen 80; server_name localhost; location /group1/M00 { ngx_fastdfs_module; } } ``` 2. **重启服务** ```bash nginx -s stop && nginx ``` ----- ### 五、验证安装 1. **上传测试文件** ```bash /usr/bin/fdfs_test /etc/fdfs/client.conf upload test.txt ``` 2. **通过URL访问** ``` http://your_server_ip/group1/M00/00/00/[fileID] ``` ----- ### 常见问题排查 1. **文件访问404** - 检查`mod_fastdfs.conf`中`store_path0`是否与storage配置一致 - 确认Nginx用户对存储目录有读权限 2. **模块加载失败** ```bash ldd /usr/local/nginx/sbin/nginx | grep fastdfs ``` 出现`libfdfsclient.so`说明加载成功 3. **日志分析** ```bash tail -f /usr/local/nginx/logs/error.log ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值