OpenResty openresty获取HTTP请求内容与其他语言的差异

注:请求方式分为GET/POST/HEAD/PUT/OPTIONS等,这里主要讲POST请求
熟悉openresty开发的同学都知道我们通过ngx.req.get_post_args()和ngx.req.get_body_data()就可以获取请求体的内容,这二者有什么区别呢?他们和PHP的$_POST,以及JAVA的HttpServletRequest.getParameter有啥区别呢?跟我一起

OpenResty 在openresy中使用lua-gd库实现验证码功能

一、下载luagd库

下载地址:https://github.com/ittner/lua-gd
注:生成图片主要的类库

二、修改编译引导文件Makefile

将Makefile中某些配置修改为与自身环境相匹配的参数,主要修改以下参数

  1. #输出的动态链接库的名称
  2. OUTFILE=gd.so
  3. #编译参数(固定值,不需修改)
  4. CFLAGS=-O3 -Wall -fPIC $(OMITFP)
  5. #指定编译时包含文件的路径

OpenResty openresty定时器ngx.timer详解

一、主要作用:

通过在后台启用nginx轻线程在指定的延时后,调用指定的函数,可以实现类似于javascript中的setTimeout和setInterval类似的功能。

注意:

  • 有些ngx_lua中的API不能在timer中调用,因为timer是与任何请求无关的,因此,比如子请求、ngx.req.*和向下游输出的API(如ngx.print,ngx.flush等)不能在timer中使用。

二、

OpenResty 基于openresty共享内存实现一个IP定位的模块

大多IP定位的功能都是基于一个IP库文件来实现,通过将目标IP与IP库文件中的数据作对比,查找出对应的IP范围,从而查找到其位置数据,对于频繁查找,显得力不从心了,因此,作者本人想通过将ip库数据放于内存,通过在内存中查找数据的方式来提高其查找性能。但是在实现过程中,遇到一些问题。

一、主要问题

1、问:IP库数据何处来,如果找到完整而相对准确的IP库?

答:目前市面上有qqwry纯真数据库,有ipi

OpenResty 基于lua-resty-websocket库实现系统监控

一、实现原理

通过lua脚本执行linux的系统监控命令(shell命令),并将执行结果得到的数据通过websocket协议传递给客户端,供客户端展示

二、实现技术

  • 前端展示:html5的websocket技术、highcharts图表展示库
  • 后端实现:lua-resty-websocket库、io.popen函数

三、知识准备与拓展

(1)html5中的websocket协议
属性:
属性名 含义