open-resty 服务安装kafka插件

从github下载

作者:程序那点事儿 日期:2023/11/16 22:01


lua-resty-kafka 插件安装

下载代码后直接解压

  1. mkdir -p /usr/local/openresty/modules/ #创建一个目录,存放lua插件
  2. cd /usr/local/openresty/modules/ #进入目录
  3. rz -y #上传lua插件lua-resty-kafka-master.zip
  4. unzip lua-resty-kafka-master.zip #解压后删除lua-resty-kafka-master.zip
  5. mv lua-resty-kafka-master kafka #名字太长了,重命名一下(可以忽略这一步)

编写一个案例测试

创建一个lua目录, 该目录下创建一个lua文件

  1. mkdir /usr/local/openresty/nginx/lua #创建一个lua目录,存放lua脚本

  2. cd /usr/local/openresty/nginx/lua #进入lua目录下

  3. 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)
  4. 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;
            }
        }
  5. 重启open-restry

    复制代码
    nginx -s reload
  6. 访问测试

    复制代码
    http://192.168.10.100/web/items/S1235433012779413504.html
相关推荐
纷飞梦雪1 分钟前
ubuntu22开启root
linux·运维·ubuntu
Konwledging2 分钟前
linux debug工具集合
linux
星哥说事2 分钟前
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击
linux·服务器
Evan芙2 分钟前
shell编程求10个随机数的最大值与最小值
java·linux·前端·javascript·网络
再睡一夏就好10 分钟前
进程调度毫秒之争:详解Linux O(1)调度与进程切换
linux·运维·服务器·c++·算法·哈希算法
BS_Li29 分钟前
【Linux系统编程】库制作与原理
linux·运维·服务器
我真会写代码32 分钟前
从入门到精通:Java Socket 网络编程实战(含线程池优化)
java·linux·服务器·socket·tcp/ip协议
刘某的Cloud36 分钟前
全局禁用ipv6
linux·运维·网络·系统·ipv6
程序辕日记40 分钟前
Linux环境docker离线安装教程
linux·docker
seven_76782309840 分钟前
【前瞻创想】Kurator架构演进与云原生未来
分布式·云原生·架构·kurator·全链路