nginx+lua+redis实现GET请求接口之黑名单(二)
一、概述
需求:所有访问/webapi/**的请求必须是GET请求,而且根据请求参数过滤不符合规则的非法请求(黑名单),可以返回具体的http状态码,提示客户端IP被列入黑名单,遭到请求的限制
实现思路:通过在Nginx上进行访问限制,通过Lua来灵活实现业务需求,而Redis用于存储黑名单列表。
二、具体实现
1.lua代码
本例中限制规则包括(post请求,ip地址黑名单,请求参数中imsi,tel值和黑名单)
2.ngnx的server虚拟主机配置文件
从新加载nginx服务,使配置文件生效
3.在redis中添加黑名单规则数据
4.验证结果
登录redis把家里的ip设置为黑名单,来测试
127.0.0.1:6379> sadd black.ip 211.144.7.32
(integer) 1
127.0.0.1:6379> smembers black.ip
- “211.144.7.32”
去掉家里的ip黑名单测试
nginx访问日志如下:
到此处演示完毕,欢迎网友们一块讨论学习lua+ngnx+redis。