openresty开发系列30--openresty中使用全局缓存 Nginx全局内存---本地缓存 使用过如Java的朋友可能知道如Ehcache等这种进程内本地缓存.Nginx是一个Master进程多个Worker进程的工作方式,因此我们可能需要在多个Worker进程中共享数据. 使用ngx.shared.DICT来实现全局内存共享. 一)首先在nginx.conf的http部分分配内存大小 语法:lua_shared_dict <name> <size> 该命令主要是定义一块…
openresty开发系列24--openresty中lua的引入及使用 openresty 引入 lua 一)openresty中nginx引入lua方式 1)xxx_by_lua   --->字符串编写方式  2) xxx_by_lua_block ---->代码块方式  3) xxx_by_lua_file  ---->直接引用一个lua脚本文件 我们案例中使用内容处理阶段,用content_by_lua演示 -----------------编辑nginx.conf-------…
openresty开发系列29--openresty中发起http请求 有些场景是需要nginx在进行请求转发 用户浏览器请求url访问到nginx服务器,但此请求业务需要再次请求其他业务:如用户请求订单服务获取订单详情,可订单详情中需要返回商品信息,也就需要再请求商品服务获取商品信息:这样就需要nginx需要有发起http请求的能力,而不是让用户浏览器再次请求商品信息 nginx服务发起http请求区分内部请求 和 外部请求 图解 下面我们就介绍一下,openResty中如何发起http请求?…
openresty开发系列28--openresty中操作mysql Mysql客户端   应用中最常使用的就是数据库了,尤其mysql数据库,那openresty lua如何操作mysql呢?   默认安装OpenResty时已经自带了该模块. 案例,mysql数据库的常用操作,编辑testmysql.lua # centos7中安装mariadb# yum install -y mariadb-server mariadb# systemctl start mariadb-server# 设…
openresty开发系列27--openresty中封装redis操作 在关于web+lua+openresty开发中,项目中会大量操作redis, 重复创建连接-->数据操作-->关闭连接(或放到连接池)这个完整的链路调用完毕,甚至还要考虑不同的 return 情况做不同处理,就很快发现代码中有大量的重复 推荐一个二次封装的类库---------------------------------# 加入openresty的lib库目录# vim openresty/lualib/resty/…
openresty开发系列26--openresty中使用redis模块 在一些高并发的场景中,我们常常会用到缓存技术,现在我们常用的分布式缓存redis是最知名的, 操作redis,我们需要引入redis模块 require "resty.redis": 我们现在做个可以操作redis进行赋值,读值的案例 一)连接redis服务器 ---定义 redis关闭连接的方法local function close_redis(red)      if not red then       …
openresty开发系列25--openresty中使用json模块 web开发过程中,经常用的数据结构为json,openresty中封装了json模块,我们看如何使用 一)如何引入cjson模块,需要使用requirelocal json = require("cjson") json.encode 将表格数据编码为 JSON 字符串格式:jsonString = json.encode(表格对象)用法示例: table 包含哈希键值对 和 数组键值对 -------------…
openresty开发系列16--lua中的控制结构if-else/repeat/for/while 一)条件 - 控制结构 if-else if-else 是我们熟知的一种控制结构.Lua 跟其他语言一样,提供了 if-else 的控制结构. )单个 if 分支 型 if 条件 then --body end 条件为真 ,执行if中的body ----------------------- x = then print("分支一") end ---- x = ) then print…
openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息 为了实现业务系统针对不同地区IP访问,展示包含不同地区信息的业务交互界面.很多情况下系统需要根据用户访问的IP信息,判断用户可能的访问区域,针对不同的区域提供个性化的服务内容.本方案在CentOS7.6环境下基于高性能的Openresty1.13.6.1来实现. 方案介绍 要通过IP地址确认归属地,通常可以使用一些在线查询服务来实现,但使用在线服务查询潜在存在性能问题,同时通过lua来访问外部服务增加额外的代码…
openresty开发系列32--openresty执行流程之初始化阶段 一)初始化阶段 1)init_by_lua   init_by_lua_block     init_by_lua_file语法:init_by_lua <lua-script-str>语境:http阶段:loading-config当nginx master进程在加载nginx配置文件时运行指定的lua脚本,通常用来注册lua的全局变量或在服务器启动时预加载lua模块: [root@node5 conf]# cat n…