- 官方模块
- 第三方模块
下图所示的是一个nginx从编译,语法检查到重载的过程
重载完以后 执行ip -a命令查看网卡地址
在浏览器中拼接mystatus 就可以查看一些请求相关信息(这里mystatus 使用的是一个在default.conf中自定义的location地址),server是握手数,accepts是请求的连接数
handled requests是总的连接数;server和accepts相等说明没有丢包
Active connections是当前活跃的连接数
reading---当前进行读操作的连接数
writing----往nginx写入的连接数
waiting----长连接的情况下客户端与服务端之间等待的状态
- 一个能随机向访问用户提供主页的参数 random_index_module
如下所示:root对应我们随意建好的一个文件夹,
random_index 我们选择on 就可以向用户随机展示索引页面
注意,有一种隐藏的页面文件是无法作为随机展示页面的(传统文件都会命名为xxxx.html 但有一种 .xxxx.html是隐藏文件 )
- 内容替换
过滤器,可以加在http{} server{} 或location{}中
上图所示:subfilter 后的第一个参数是替换之前的内容,第二个参数是替换之后的内容;sub_filter_once参数是指是否所有内容都要被替换,还是只替换一次(通常是网页标签中的第一个此内容)
- limit_conn_zone 连接限制
http请求三次握手
下图所示:limit_conn_zone表示连接参数 key zone=name 定义了该链接的名称 size是带宽;底下的number表示连接数量
- limit_req_zone 请求限制
下图中,1m代表服务器1m的空间内,对于同一远程客户端,1r/s 代表每秒钟处理1次请求
$binary_remote_addr是一远程地址;remote_addr也是远程地址,然而binary开头的地址节省10个字节的空间,对于成百上千的请求来说,这种节省也是十分可观的。
压力测试工具 ab是一种测试工具, -n 总共的请求数 -c并发的请求数 下入所示是对目标网络地址发起的请求
测试一
default.conf文件配置如下:
测试default.cont 语法是否有误 :语法nginx -t -c 并且nginx -s reload -c,这样做可能是因为nginx中加载了default.conf文件的缘故
再度发起测试
结果如下;有4条请求执行完毕,这说明存在了超时的现象
查看AB端的提示信息:compieted requests表明提交的20条请求(Concurrency Level)执行完毕,但是Non-2xx又显示19条没有拿到状态为200的结果,所以真正成功执行的只有1条请求。
再次修改default.conf,burst = 3代表有3条请求可以延时响应,nodelay表示其余的请求不响应
ab端显示的测试结果
- 连接的限制 limit_conn-----同一时刻只允许一个连接
查看ab端的日志,20条请求里,只有3条执行失败,这说明连接限制(limit_conn)的政策要比请求限制(limit_req)政策宽松得多,这是因为一次连接中可能包含了多个请求!