作者:程序那点事儿 日期:2023/11/16 22:01
lua-resty-kafka 插件安装
下载代码后直接解压
- mkdir -p /usr/local/openresty/modules/ #创建一个目录,存放lua插件
- cd /usr/local/openresty/modules/ #进入目录
- rz -y #上传lua插件lua-resty-kafka-master.zip
- unzip lua-resty-kafka-master.zip #解压后删除lua-resty-kafka-master.zip
- mv lua-resty-kafka-master kafka #名字太长了,重命名一下(可以忽略这一步)
编写一个案例测试
创建一个lua目录, 该目录下创建一个lua文件
-
mkdir /usr/local/openresty/nginx/lua #创建一个lua目录,存放lua脚本
-
cd /usr/local/openresty/nginx/lua #进入lua目录下
-
vim items-access.lua #创建一个lua文件,内容如下
--引入json解析库 local cjson = require("cjson") --kafka依赖库 --是基于nginx.conf文件的lua_package_path配置路径下引入lua文件 local client = require "resty.kafka.client" local producer = require "resty.kafka.producer" --配置kafka的连接地址 local broker_list = { {host = "192.168.10.104", port=9092}, {host = "192.168.10.105", port=9092}, {host = "192.168.10.106", port=9092} } --创建生产者 local pro = producer:new(broker_list, {producer_type="async"}) --获取ip local headers = ngx.req.get_headers() local ip = headers["X-REAL-IP"] or headers["X_FORWARDER_FOR"] or ngx.var.remote_addr or "0.0.0.0" --定义消息内统 local logjson = {} logjson["uri"] = ngx.var.uri logjson["ip"] = ip logjson["token"] = "Bearer ITHEIMA" logjson["actime"] = os.date("%Y-%m-%d %H:%m:%S") --发送消息 local offset, err = pro:send("logitems", nil, cjson.encode(logjson)) --页面跳转 local uri = ngx.var.uri uri = string.gsub(uri, "/web", "") ngx.exec(uri)
-
vim /usr/local/openresty/nginx/conf/nginx.conf #引入插件,注意"?"前面是"/"
#lua插件位置 lua_package_path "/usr/local/openresty/modules/kafka/lib/?.lua;;"; server { listen 80; server_name localhost; #/web开始的请求,做日志记录,然后跳转到下面的location location /web/items/ { content_by_lua_file /usr/local/openresty/nginx/lua/items-access.lua; } }
-
重启open-restry
nginx -s reload
-
访问测试
http://192.168.10.100/web/items/S1235433012779413504.html