使用redis配置ip列表实现Nginx限制ip访问

一、概述

部分情况下,需要对有疑问的ip进行限制隔离,或者限制部分无效流量。例如抢购商品,当商品抢完后,剩余的流量访问不到服务端,在网络层拦截返回商品售完,或对恶意的ip地址进行拦截,拒绝访问等。
限制ip访问有很多方式,包括系统自身的防火墙,服务端校验等,这里是使用Nginx通过lua插件读取配置在redis中的ip黑名单,Nginx拦截请求进行校验ip是否被限制访问。
本文使用OpenResty的lua-resty-redis模块使用Nginx访问redis。OpenRestys类似一个全家桶,是一个通过lua扩展Nginx功能的插件,OpenResty 最新版本1.15.8.1的下载地址:http://openresty.org/cn/ann-1015008001.html。 由于安装环境的nginx为1.8,所以这里下载了1.13.6.2版本安装。 OpenResty 里面有操作redis和mysql的插件。如下图
OpenResty 解压包内插件

二、安装

linux环境已经安装了Nginx1.8版本,所以这里只安装openresty.

  • 下载解压
wget https://github.com/openresty/openresty/releases/download/v1.13.6.2/openresty-1.13.6.2.tar.gz
tar -xvf openresty-1.13.6.2.tar.gz
cd openresty-1.13.6.2
  • 编译安装
./configure -j2
make
make install
  • 安装lua

openresty解压后的安装包里面的bundle文件夹

cd openresty-1.13.6.2/bundle/LuaJIT-2.1-20180420/
make
make install

安装完成后配置环境变量,向/etc/profile文件中添加一下内容

# tell nginx's build system where to find LuaJIT 2.0:
export LUAJIT_LIB=/usr/local/openresty/luajit/lib
export LUAJIT_INC=/usr/local/openresty/luajit/include/luajit-2.1/

更新环境变量source /etc/profile

  • 编译配置Nginx

linux环境已经安装了Nginx1.8版本,所以只需要重新编译Nginx然后替换安装文件sbin里的nginx文件夹即可。找到Nginx1.8版本之前的原安装文件,重新编译nginx

./configure --prefix=/usr/local/nginx --with-cc-opt=-O2 --add-module=/usr/local/o
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值