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
相关推荐
^Moon^3 小时前
CycloneDDS:跨主机多进程通信全解析
c++·分布式·dds
添砖java‘’3 小时前
vim高效编辑:从入门到精通
linux·编辑器·操作系统·vim
tryCbest4 小时前
CentOS部署Docker容器
linux·docker·centos
qyhua5 小时前
【Linux运维实战】彻底修复 CVE-2011-5094 漏洞
linux·运维·安全
坠金5 小时前
linux/centos迁移conda文件夹
linux·centos·conda
纳于大麓6 小时前
Kotlin基础语法
linux·windows·kotlin
九皇叔叔6 小时前
Linux Shell 正则表达式中的 POSIX 字符集:用法与实战
linux·运维·正则表达式
東雪蓮☆7 小时前
K8s 平滑升级
linux·运维·云原生·kubernetes
长安城没有风7 小时前
从入门到精通【Redis】Redis 典型应⽤ --- 分布式锁
数据库·redis·分布式
---学无止境---8 小时前
Linux中进程创建和缓存对象初始化fork_init、proc_caches_init和buffer_init
linux