openresty

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

亡梦爱人 提交于 2019-11-28 12:33:28
1。背景 为了禁止一些爬虫或恶意用户请求的服务器,我们需要创建一个动态IP黑名单。对于黑名单内的IP,拒绝提供服务。 两。建筑 实现IP黑名单的方法有很多种。 1,在操作系统层面,配置iptables和拒绝指定IP的网络需求。 2、在Web服务器层,IP黑名单是通过配置nginx的否定选项或Lua插件。 3,在应用程序级别,在请求服务之前检查客户端IP是否为黑名单。 为了方便管理和共享,实现了IP黑名单功能通过nginx lua使用框架+ +。 三、实现 1、安装 Nginx+Lua模块,推荐使用 OpenResty,这是一个集成了各种 Lua 模块的 Nginx 服务器: OpenResty 2、安装并启动 Redis 服务器; 3、配置 Nginx 示例: ginx 配置 其中 lua_shared_dict ip_blacklist 1m; 由 Nginx 进程分配一块 1M 大小的共享内存空间,用来缓存 IP 黑名单,参见: https://github.com/openresty/lua-nginx-module#lua_shared_dict access_by_lua_file lua/ip_blacklist.lua; 指定 lua 脚本位置 4、配置 lua 脚本,定期从 Redis 获取最新的 IP 黑名单,文件内容参见: https://gist.github

openresty使用http模块

吃可爱长大的小学妹 提交于 2019-11-28 08:27:14
OpenResty默认没有提供Http客户端,需要使用第三方提供的插件 我们可以从github上搜索相应的客户端,比如https://github.com/pintsized/lua-resty-http 安装方法:将 lua-resty-http/lib/resty/ 目录下的 http.lua 和 http_headers.lua 两个文件拷贝到 /usr/local/openresty/lualib/resty 目录下即可 (假设 OpenResty 安装目录为 /usr/local/openresty) local res, err = httpc:request_uri(uri, { method = "POST/GET", ---请求方式 query = str, ---get方式传参数 body = str, ---post方式传参数 path = "url" ----路径 headers = { ---header参数 ["Content-Type"] = "application/json", } }) 示例:编写模拟请求天猫的查询 --引入http模块 local http = require("resty.http") --创建http客户端实例 local httpc = http:new() local resp,err = httpc:request

openresty下安装luarocks

拜拜、爱过 提交于 2019-11-28 07:56:59
wget https://luarocks.org/releases/luarocks-2.4.1.tar.gz tar -xzvf luarocks-2.4.1.tar.gz cd luarocks-2.4.1/ ./configure --prefix=/usr/local/openresty/luajit \ --with-lua=/usr/local/openresty/luajit/ \ --lua-suffix=jit \ --with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1 make build # 安装需要root权限 sudo make install 此处要做说明的是 --prefix 设定 luarocks 的安装目录 --with-lua 则是系统中安装的 lua 的根目录 --lua-suffix 版本后缀,此处因为openresyt的lua解释器使用的是 luajit ,所以此处得写 jit --with-lua-include 设置 lua 引入一些头文件头文件的目录 之后我们就可以看到 luarocks 命令就被安装在了 /usr/local/openresty/luajit/bin 下面 然后我们把它添加到到 PATH 中 vi ~/.bash_profile

VeryNginx中文文档

杀马特。学长 韩版系。学妹 提交于 2019-11-28 07:51:13
VeryNginx VeryNginx 是一个功能强大而对人类友好的 Nginx 扩展程序. 提示 v0.2` 版本之后,控制台入口被移动到了 `/verynginx/index.html 中文控制台入口被移动到了 `/verynginx/index_zh.html 介绍 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了高级的防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 VeryNginx在线实例 用户名 / 密码: verynginx / verynginx 详细配置说明见: VeryNginx Github WiKi Nginx 运行状态分析 每秒请求数 响应时间 网络流量 网络连接数 自定义行为 VeryNginx 包含强大的自定义功能,可以做很多事情 自定义行为包含两部分, Matcher 和 Action 。 Matcher 用来对请求进行匹配, Action 为要执行的动作 这样的优势在于把所有的前置判断整合在Matcher里一起来实现了,使复杂(组合)规则的实现变成了可能 Matcher 一个 Matcher 用来判断一个 Http 请求是否符合指定的条件, 一个 Matcher 可以包含一个或者多个约束条件,目前支持以下几种约束:

centos7安装openresty1.15

与世无争的帅哥 提交于 2019-11-28 07:24:09
介绍 OpenResty目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。 下载地址 https://openresty.org/en/download.html wget https://openresty.org/download/openresty-1.15.8.1.tar.gz 安装所需依赖包 yum -y install readline-devel pcre-devel openssl-devel gcc perl curl 编译安装 解压压缩包 tar zxvf openresty-1.15.8.1.tar.gz 进入文件夹 cd openresty-1.15.8.1 编译 ./configure --prefix=/usr/local/webservice/openresty --with-luajit --without-http_redis2_module --with-http_iconv_module 编译&编译安装 gmake & gmake install 配置 启动Nginx,加载nginx主配置文件 /usr/local/webservice

openresty域名动态解析

僤鯓⒐⒋嵵緔 提交于 2019-11-28 07:21:42
 工作中使用openresty,使用第三方服务API通过域名访问。但是,域名通过DNS解析出来之后,在openresty是有 配置解析阶段 很多时候我们会在 Nginx 配置文件里配置上一些域名,比如配置我们的上游服务器。 upstream example.com { server test.example.com; } 对于这类域名,Nginx 会在配置解析阶段就将其解析出来,接下来(请求处理过程)使用的都是当时解析得到的 IP。Nginx 核心有一个函数 ngx_parse_url ,负责对 url 格式进行分析,包括解析出主机名,端口号以及 URL path 等。针对 IPv4 的情况,它会调用 ngx_parse_inet_url 进行具体的解析任务,如果必要,最终它会调用到 ngx_inet_resolve_host 进行域名解析, ngx_inet_resolve_host 大多情况下会使用 getaddrinfo 进行解析,最终向 /etc/resolv.conf 下所配置的 DNS server 发起解析请求。 归纳来说这个解析过程有两个特点,一是使用了系统配置的 DNS server;二是解析过程是同步且阻塞的,因此这种解析方式仅在 Nginx 配置解析阶段会被使用。另外这种解析方式的缺点就是只解析一次,所以如果在 Nginx

浏览器给openresty连接发送参数请求,查询数据库,并返回json数据

风流意气都作罢 提交于 2019-11-28 06:00:30
nginx.conf配置文件 #user nobody; worker_processes 1; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; log_format log_resp_body '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user

OpenResty部署nginx及nginx+lua

久未见 提交于 2019-11-28 04:13:01
因为用nginx+lua去开发,所以会选择用最流行的开源方案,就是用OpenResty nginx+lua打包在一起,而且提供了包括redis客户端,mysql客户端,http客户端在内的大量的组件 1、部署第一个nginx,作为应用层nginx (1)部署openresty mkdir -p /usr/servers cd /usr/servers/ yum install -y readline-devel pcre-devel openssl-devel gcc wget http://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz tar -xzvf ngx_openresty-1.7.7.2.tar.gz cd /usr/servers/ngx_openresty-1.7.7.2/ cd bundle/LuaJIT-2.1-20150120/ make clean && make && make install ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit cd bundle wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz tar -xvf 2.3.tar.gz cd bundle

Lua+openresty学习资料

纵饮孤独 提交于 2019-11-27 15:20:21
Lua学习资料 Lua是一个强大的、快速、轻量级、可嵌入的脚本语言。     Lua结合了简单的程序语法和功能强大的数据结构描述基于关联数组和可扩展的语义。Lua是动态类型的,解释字节码的一个基于寄存器的虚拟机运行,并与增量垃圾收集自动内存管理,使它适合配置脚本,快速原型。 lua官方网站 http://www.lua.org lua5.3官方参考手册 http://www.lua.org/manual/5.3/ lua5.3中文翻译手册 http://www.runoob.com/manual/lua53doc/ lua入门教程 http://www.runoob.com/lua/lua-environment.html 语法 Lua程序设计Programming in Lua 果冻想-Lua 语法入门 源码 the implementation of lua 50 英文原版 中文翻译 探索Lua52内部实现 一份朴实的Lua51虚拟机指令介绍英 Lua源码鉴赏-云风 详解关于Lua源码分析学习教程 lua metatable使用和源码分析 Lua源码 应用 Lua51 参考手册 Lua53 参考手册 云风博客 Lua Programming Gems 用好LuaUnity 等等 --------------------------------------------------

Openresty使用

守給你的承諾、 提交于 2019-11-27 08:51:07
OpenResty 是一个全功能的 Web 应用服务器。它打包了标准的 Nginx 核心,常用的第三方模块以及大多数依赖项。 可以把它看成是 Nginx 附加众多的第三方插件的合集。其主体是嵌入 lua 脚本的支持,让你能够使用 lua 灵活地处理运算逻辑。 本课程主要讲 lua 为 Nginx 带来的新的处理方式,及 OpenResty 组件的使用。 12.1. Openresty的安装配置 12.1.1. 简易的 yum 安装方式 此方式简单,缺点是无法干预启停插件 yum install yum-utils yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo yum install openresty 12.1.2. 源码安装方式 wget https://openresty.org/download/openresty-1.15.8.1.tar.gz tar -zxvf openresty-1.15.8.1.tar.gz ##选择需要的插件启用, --with-Components 激活组件,--without 则是禁止组件 ./configure --without-http_redis2_module --with-http_iconv_module make