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
相关推荐
枳实-叶2 小时前
【Linux驱动开发】第四天:dmesg日志全解+驱动加载失败极速排查
linux·运维·驱动开发
武超杰2 小时前
Nginx从入门到精通
运维·nginx
wdfk_prog2 小时前
正常关闭虚拟机时,不要点“关机”,而要点“关闭客户机”
linux·c语言·网络·ide·vscode
weixin_704266052 小时前
Nginx 反向代理 + 6 种负载均衡策略
运维·nginx
fish_xk3 小时前
Linux开方工具
linux·运维·服务器
techdashen5 小时前
Pingora 的开源——Cloudflare 基于 Rust 搭建的用于替换Nginx的网络框架
nginx·rust·开源
敖正炀5 小时前
Kafka 安全机制:SASL 认证、SSL 加密与 ACL 授权
kafka
用户2367829801685 小时前
Linux find 命令深度解析:从递归遍历到性能优化的完整实现
linux
ascarl20106 小时前
Linux.do 帖子整理:AI 调用 Chrome DevTools 调试前端页面
linux·前端·人工智能
Slow菜鸟6 小时前
Docker 学习篇(三)| Docker安装指南(Linux版)
linux·学习·docker