搜索
您的当前位置:首页正文

Ngnix IP访问限制测试报告1

来源:六九路网
 Ngnix IP访问限制测试报告 密级: 内部公开

Ngnix IP访问限制测试报告

性能测试报告 密级:内部公开

目 录

1

引言 ........................................................................................................................................................................ 3 1.1 测试目的 ......................................................................................................................................................... 3 1.2 背景 ................................................................................................................................................................. 3 1.3 术语 ................................................................................................................................................................. 3 测试资源和环境 .................................................................................................................................................... 3 2.1 测试环境及组网图 ......................................................................................................................................... 3 2.2 硬件 ................................................................................................................................................................. 3 2.3 软件 ................................................................................................................................................................. 3 NGINX IP限制策略 ............................................................................................................................................. 3 3.1 Nginx limit_req_zone 指令 ............................................................................................................................ 4 测试结果 ................................................................................................................................................................ 4 4.1 无限制场景 ..................................................................................................................................................... 4 4.2 限制场景 ......................................................................................................................................................... 5 4.3 测试结论及建议 ............................................................................................................................................. 8 遗留问题列表 ........................................................................................................................................................ 8 风险和依赖 ............................................................................................................................................................ 8

2

3 4

5 6

第2页/共8页

性能测试报告 密级:内部公开

1 引言

1.1 测试目的

主要是为了验证nginx的ngx_http_limit_req_module模块对单位时间段内的同一IP的请求数量进行限制,可以针对某些提供的API或是易于遭受DOS攻击的URL进行访问限制。

1.2 背景

1.3 术语

名词术语 Nginx

解释 Nginx (\"engine x\") 是一个高性能的 HTTP 和 反向代理 服务器

2 测试资源和环境

2.1 测试环境及组网图

loadrunnerNginx 服务器API 服务器

2.2 硬件

序号 1 2 3 名称 Loadrunner Nginx服务器 Api服务器 软件名称 Loadrunner Nginx Weblogic 操作系统 Window 7 Liunx Liunx 版本 11.50 1.4.7 10.3.6 配置 双核、4G 双核、8G 双核、8G 数量 3 1 1 数量 3 1 1 备注 模拟用户并发访问接口 2.3 软件

序号 1 2 3 备注 3 Nginx IP限制策略 ngx_http_limit_req_module模块可以通过定义的键值来限制请求处理的频率。它可以限制

第3页/共8页

性能测试报告 密级:内部公开

来自单个IP地址的请求处理频率。限制的方法是通过一种“漏桶”的方法——固定每秒处理的请求数,推迟过多的请求处理。

设置对应的共享内存限制域和允许被处理的最大请求数阈值。如果请求的频率超过了限制域配置的值,请求处理会被延迟,所以所有的请求都是以定义的频率被处理的。超过频率限制的请求会被延迟,直到被延迟的请求数超过了定义的阈值 这时,这个请求会被终止,并返回503 (Service Temporarily Unavailable) 错误。这个阈值的默认值等于0。 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location /search/ { limit_req zone=one burst=5; }

限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于5个。如果不希望超过的请求被延迟,可以用nodelay参数:limit_req zone=one burst=5 nodelay;

3.1 Nginx limit_req_zone 指令

指令 limit_req_zone

语法: limit_req_zone $variable zone=name:size rate=rate; 默认值: — 上下文: http

设置一块共享内存限制域的参数,它可以用来保存键值的状态。 它特别保存了当前超出请求的数量。 键的值就是指定的变量(空值不会被计算)。 示例用法:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

这里,状态被存在名为“one”,最大10M字节的共享内存里面。对于这个限制域来说 平均处理的请求频率不能超过每秒一次。

键值是客户端的IP地址。 如果不使用$remote_addr变量,而用$binary_remote_addr变量, 可以将每条状态记录的大小减少到64个字节,这样1M的内存可以保存大约1万6千个64字节的记录。 如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 503 (Service Temporarily Unavailable)错误。

请求频率可以设置为每秒几次(r/s)。如果请求的频率不到每秒一次, 你可以设置每分钟几次(r/m)。比如每秒半次就是30r/m。

4 测试结果

4.1 无限制场景

1、一个用户(IP)访问服务器,每个用户每秒发出30个请求,持续请求60s。 用户 并发速率 持续时间 请求数 请求成功数 172.16.39.211 1r/s 60s 60 60 第4页/共8页

性能测试报告 密级:内部公开

2、模拟3个用户(IP)访问服务器,每个用户每秒发出30个请求,持续请求60s。 用户 并发速率 持续时间 请求数 请求成功数 172.16.39.211 30r/s 60s 1800 1800 172.16.42.220 30r/s 60s 1800 1800 172.16.42.221 30r/s 60s 1800 1800

结论:在未对接口做任何限制时,每一个IP都可以进行无限制的并发,且服务器都能正常的接受并返回;此种情况下,会出现某个IP对系统进行恶意性的并发,导致服务器性能下降甚至导致服务崩溃。

4.2 限制场景

Nginx配置:

limit_req_zone $binary_remote_addr zone=req_one:10m rate=20r/s; location /certusnet-sso/iptv/hd{

proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off;

第5页/共8页

性能测试报告 密级:内部公开

proxy_pass http://sso_server/certusnet-sso-iptvhd/iptv/hd; limit_req zone=req_one burst=5 nodelay; access_log logs/root.access.log main; }

Nginx限制每个IP只允许每秒发送20个请求,其余全部丢弃;

1、一个用户(IP)访问服务器,每个用户每秒发出15个请求,持续请求60s。 用户 并发速率 持续时间 请求数 请求成功数 172.16.39.211 15r/s 60s 900 840

2、一个用户(IP)访问服务器,每个用户每秒发出25个请求,持续请求60s。 用户 并发速率 持续时间 请求数 请求成功数 172.16.39.211 25r/s 60s 1500 1150

第6页/共8页

性能测试报告 密级:内部公开

3、一个用户(IP)访问服务器,每个用户每秒发出5个请求,持续请求60s。 用户 并发速率 持续时间 请求数 请求成功数 172.16.39.211 5r/s 60s 300 300 172.16.42.220 5r/s 60s 300 300 172.16.42.221 5r/s 60s 300 300

3、一个用户(IP)访问服务器,每个用户每秒发出25个请求,持续请求60s。 用户 并发速率 持续时间 请求数 请求成功数 172.16.39.211 25r/s 60s 1500 1150 172.16.42.220 25r/s 60s 1500 1150 172.16.42.221 25r/s 60s 1500 1150

第7页/共8页

性能测试报告 密级:内部公开

结论:通过上述几个场景的验证发现,nginx可以实现对单个IP在某一时间段的并发数的限制,超出限制部分的情况,nginx会直接返回503,通过nginx的限制,可以有效的对易于遭受DOS攻击的URL进行保护。

4.3 测试结论及建议

从上述无限制和限制的几个场景测试数据中,可以得出通过nginx的

ngx_http_limit_req_module模块对单位时间段内的同一IP的请求数量进行限制,可以针对某些提供的API或是易于遭受DOS攻击的URL进行访问限制。

5 遗留问题列表

无遗留问题

6 风险和依赖

1、此方案中的IP并发数如20r/s,如果接口的处理效率或接口消息比较复杂时,会导致在并发数<20r/s时,nginx也会直接给出503的拒绝;此处需要合理的设置并发数限制或使用“漏桶”延迟处理(需要设置具体的延迟处理数);

2、此方案只能对单个IP进行并发限制,无法对整个访问的IP数进行限制,如有人恶意使用IP欺骗或其他方法,进行多IP的并发攻击;

3、此方案使用nginx进行限制,只能对统一的并发数进行配置 ,无法做到不同接口不同的并发数的限制;

第8页/共8页

因篇幅问题不能全部显示,请点此查看更多更全内容

Top