必要包整合链接

nginx+lua+redis.rar-其它文档类资源-CSDN下载

nginxLuaRedis文件.rar-其它文档类资源-CSDN下载

安装必要环境

apt-get install build-essential libtool gcc automake autoconf make

下载必要的包

# 安装路径
cd /usr/local/src/# lua迷你包
wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz# nginx包
wget http://nginx.org/download/nginx-1.13.12.tar.gz
tar -zxvf nginx-1.13.12.tar.gz# nginx安装依赖包
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
tar -xvf pcre-8.40.tar.gz
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
tar -xvf openssl-1.0.2o.tar.gz# nginx模块包
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz
tar -xvf v0.10.9rc7.tar.gz
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar -xvf v0.3.0.tar.gz # lua-resty-redis
https://github.com/openresty/lua-resty-redis.git
# 解压# redis包
wget http://download.redis.io/releases/redis-4.0.1.tar.gz

安装lua解释器

tar  -xvf   LuaJIT-2.0.2.tar.gzcd  LuaJIT-2.0.2make && make installexport LUAJIT_LIB=/usr/local/libexport LUAJIT_INC=/usr/local/include/luajit-2.0

安装nginx和模块包

cd /nginx-1.13.12./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.40 --with-zlib=/usr/local/src/zlib-1.2.11 --with-openssl=/usr/local/src/openssl-1.0.2o --add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.9rc7make && make install

报错处理

问题1

error: this statement may fall through [-Werror=implicit-fallthrough=] h ^= data[2] << 16;

vim objs/Makefile

将 -werror 去掉,变成以下样子

保存退出后重新make && make install

问题2

nginx: [error] invalid PID number "" in "/usr/local/nginx/nginx.pid"

./nginx -c /usr/local/nginx/nginx.conf
./nginx -s reload

安装成功后

cd /usr/local/nginx

安装redis

cd /usr/local/srctar xzf redis-4.0.1.tar.gzcd redis-4.0.1makemkdir /usr/local/rediscp /usr/local/src/redis-4.0.1/src/redis-server /usr/local/rediscp /usr/local/src/redis-4.0.1/src/redis-benchmark /usr/local/rediscp /usr/local/src/redis-4.0.1/src/redis-cli /usr/local/rediscp /usr/local/src/redis-4.0.1/redis.conf /usr/local/redis

修改redis配置文件

vim redis.conf

启动redis服务器

./redis-server redis.conf &

进入redis客户端

./redis-cli -h 127.0.0.1 -a 123456

设置一个redis测试字段

set key1 helloworld

安装lua-resty-redis

cd /usr/local/src/lua-resty-redis-mastermake && make install

安装完成后在/usr/local/lib/lua/resty里面有redis.lua

vim /usr/local/lib/lua/redisUtil.lua
local redis = require "resty/redis"local log = ngx.loglocal ERR = ngx.ERRlocal setmetatable = setmetatablelocal _M = {undefined}local mt = { __index = _M }local function errlog(...)log(ERR, "Redis: ", ...)endfunction _M.exec(self, func)local red = redis:new()red:set_timeout(self.timeout)local ok, err = red:connect(self.host, self.port)if not ok thenerrlog("Cannot connect, host: " .. self.host .. ", port: " .. self.port)return nil, errendif self.password ~= '' then-- 请注意这里 auth 的调用过程local countcount, err = red:get_reused_times()if 0 == count thenok, err = red:auth(self.password)if not ok thenngx.say("failed to auth: ", err)returnendelseif err thenngx.say("failed to get reused times: ", err)returnendendred:select(self.database)local res, err = func(red)if res thenlocal ok, err = red:set_keepalive(self.max_idle_time, self.pool_size)if not ok thenred:close()endendreturn res, errendfunction _M.new(opts)local config = opts or {}local self = {undefinedhost = config.host or "127.0.0.1",password = config.password or '',port = config.port or 6379,timeout = config.timeout or 5000,database = config.database or 0,max_idle_time = config.max_idle_time or 60000,pool_size = config.pool_size or 1000}return setmetatable(self, mt)endreturn _M

修改nginx配置文件

vim /usr/local/nginx/nginx.conf

http中添加

http内添加 lua_package_path "/usr/local/lib/lua/?.lua";

在server里添加location

        location /lua/test {default_type 'text/plain';content_by_lua_file conf/lua/redisController.lua;}

编写lua测试脚本

mkdir lua
vim redisController.lua# 404 看看logs里的error.log
local redisUtil = require "redisUtil"local red = redisUtil.new({host = "127.0.0.1",password="yourpassword"})local res, err = red:exec(function(red)return red:get("key1")end)ngx.say(res);

查看测试效果

curl http://127.0.0.1/lua/test

返回结果

helloworld

黑名单lua脚本:

Nginx+Lua实现动态黑名单_祈雨v的博客-CSDN博客_nginx 黑名单

# redis查看黑名单ipsmembers forbidden_list

参考连接:
Nginx+Lua+Redis搭建高并发服务 -- Redis中国用户组(CRUG)

高并发环境搭建nginx+lua+redis_小武哥的专栏-CSDN博客

【Ubuntu18.04】实现redis+lua+nginx动态黑名单封禁相关推荐

  1. ubuntu18.04管理redis

    ubuntu下 redis的安装使用 安装 1. 进入redis安装路径 cd ~/installed/redis-5.0.7 2. 启动redis 启动服务端 redis-server 启动客户端( ...

  2. nginx动态黑名单配置2

    之前写过关于nginx配置动态黑名单功能 原理是查询日志,统计某段时间内访问次数很频繁的ip,对ip进行封禁 如果在nginx之前有WAF,F5设备,remote_addr 的地址是WAF.F5的地址 ...

  3. ubuntu18.04安装redis教程

    文章目录 redis简介 linux下redis安装 连接redis redis简介 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言 ...

  4. Ubuntu18.04下完全卸载nginx服务器

    1.注意点:首先需要停止nginx的服务$ sudo service nginx stop 2.删除nginx,–purge包括配置文件$ sudo apt-get --purge remove ng ...

  5. 解除IP黑名单封禁(百度云)

    步骤 获取自己本地公网IP 登录控制台 查看主机安全 搜索自己IP 进行一键加白 详情 百度搜索"IP"即可获取本地的网络IP 点击安全和管理->主机安全 找到自己的服务器, ...

  6. openresty开发系列38--通过Lua+Redis 实现动态封禁IP

    openresty开发系列38--通过Lua+Redis 实现动态封禁IP 一)需求背景为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝 ...

  7. Openresty通过Lua+Redis 实现动态封禁IP

    需求背景 为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝提供服务.并且可以设置失效 环境准备 linux version:centos ...

  8. Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

    前言:由于公司前几天短信接口被一直攻击,并且攻击者不停变换IP,导致阿里云短信平台上的短信被恶意刷取了几千条,然后在Nginx上对短信接口做了一些限制 临时解决方案: 1.查看Nginx日志发现被攻击 ...

  9. Nginx 通过 Lua + Redis 实现动态封禁 IP

    背景 为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝提供服务. 架构 实现 IP 黑名单的功能有很多途径: 1.在操作系统层面,配置 ...

最新文章

  1. 标 题:[转帖]SQL Server日期计算(收藏)
  2. C/C++中使用函数memset对int型数组赋值(0,-1,max,min)
  3. 效率提升看得见 神策 A/B 测试可视化试验能力正式上线
  4. maven版本控制实战
  5. ELK安装配置及nginx日志分析
  6. win10如何截屏_6个Win10系统使用小技巧,对你一定有用!
  7. 幼儿园学校网站JAVA_基于jsp的幼儿园网站-JavaEE实现幼儿园网站 - java项目源码
  8. C#实现图片转字符画
  9. mysql将公历农历转换_SQL 日期转换(阳历转阴历)
  10. Python绘制用于学术论文投稿的黑白图片
  11. linux虚拟机对外部sd卡格式化和分区
  12. 数组排序之后相邻数的最大差值
  13. IntelliJ Idea及其同系列产品解决网页查看源码Html排版样式乱了
  14. 好用的iOS开发工具
  15. 笔记本屏幕亮度随着显示内容而变,时亮时暗
  16. android鼠标位移算法分析。
  17. 关闭应用右下角的盾牌图标
  18. AmazeUI 文本大小对照表
  19. 计算机编程的主要内容,什么是电脑编程电脑编程的概述
  20. [编程语言基础] 函数式编程

热门文章

  1. VS2017 创建安装项目模板
  2. kotlin(java) 文件压缩
  3. 多智能体系统编队算法仿真--python3实现
  4. Serial Programming Guide for POSIX Operating Systems
  5. chrono是一个time library,C++11 std::chrono库详解
  6. 电脑装机硬盘分区格式
  7. 大数据分析应用领域之预测性分析
  8. Windows自带压缩文件工具makecab命令详解
  9. 两年数据对比柱形图_举个栗子!Tableau 技巧(152):横向对比堆叠柱形图的各部分占比...
  10. GameEntity(四)—— Ientity