Kong 自定义插件安装和调试

news2024/12/25 15:31:38

文件格式

官方文档

├── kong-plugin-mepjwt-0.1.0-1.all.rock  # luarocks安装依赖 luarocks pack生成的文件
├── kong-plugin-mepjwt-0.1.0-1.rockspec  # luarocks的安装依赖
└── mepjwt
    ├── handler.lua  # 主要处理业务逻辑的文件
    ├── jwt_parser.lua  # 依赖文件  jwt解析脚本
    ├── schema.lua  # 给handle提供配置的文件
    ├── utils_mysql.lua  # 依赖文件 数据库处理脚本
    └── utils_redis.lua  # 依赖文件  redis处理脚本

rockspec文件

# kong-plugin-mepjwt-0.1.0-1.rockspec

local plugin_name = "mepjwt"  #  插件名称
local package_name = "kong-plugin-" .. plugin_name
local package_version = "0.1.0"
local rockspec_revision = "1"

local github_account_name = "Kong"
local github_repo_name = "kong-plugin"
local git_checkout = package_version == "dev" and "master" or package_version


package = package_name
version = package_version .. "-" .. rockspec_revision
supported_platforms = { "linux", "macosx" }


description = {
  summary = "Kong is a scalable and customizable API Management Layer built on top of Nginx.",
  homepage = "https://"..github_account_name..".github.io/"..github_repo_name,
  license = "Apache 2.0",
}


dependencies = {
}

# 主要是这里的 定义插件的路径和主要的两个文件路径 =号后面根据实际填写
build = {
  type = "builtin",
  modules = {
    -- TODO: add any additional code files added to the plugin
    ["kong.plugins."..plugin_name..".handler"] = "/etc/kong/plugins/"..plugin_name.."/handler.lua",
    ["kong.plugins."..plugin_name..".schema"] = "/etc/kong/plugins/"..plugin_name.."/schema.lua",
  }
}

安装插件

1、在本地安装(基于当前目录中的.rockspec)

 luarocks make

response

kong-plugin-mepjwt 0.1.0-1 is now installed in /usr/local (license: Apache 2.0)

2、打包已安装的文件

luarocks pack kong-plugin-mepjwt

response

Packed: /etc/kong/plugins/kong-plugin-mepjwt-0.1.0-1.all.rock

同时会生成kong-plugin-mepjwt-0.1.0-1.all.rock文件

3、安装插件

luarocks install kong-plugin-mepjwt-0.1.0-1.all.rock

response

kong-plugin-mepjwt 0.1.0-1 is now installed in /usr/local (license: Apache 2.0)

查看

luarocks list|grep jwt  

response

kong-plugin-jwt-signer
kong-plugin-mepjwt  # 已安装

DB-less模式插件加载

kong.conf文件中添加插件

plugins = mepjwt # 这里只使用了自定义的插件详细是用参考官网
log_level = debug

yaml文件配置

services:
  - name: service  # 服务名称
  url: xxxxx  # 这里填写backend服务地址
    tags:
      - service
    plugins:
      - name: jwt
        config:  # 这里需要同步配置一份
          mysql:
            host: xxx
            port: xxx
            database: xxx
            user: xxx
            password: xxx
          redis:
            host: xxxx
            port: xxxx
            password: xxxx
            charset: xxxx
            user_db: xxx
    routes:
      - name: ngrok-mep-server  # 路由名称
        paths:
          - /mep-service  # 路由后缀名称



consumers:
  - username: jwt-auth-user


plugins:
  - name: jwt
    config:  # schema中的配置
      mysql:
        host: xxx
        port: xxx
        database: xxx
        user: xxx
        password: xxx
      redis:
        host: xxxx
        port: xxxx
        password: xxxx
        charset: xxxx
        user_db: xxx

重启加载

kong restart --v

image-20230714172051026

在加载过程中难免会有错误,需要自己打日志排查

debug

luarocks remove kong-plugin-mepjwt && luarocks make && luarocks pack kong-plugin-mepjwt && luarocks install kong-plugin-mepjwt-0.1.0-1.all.rock

kong restart --v

校验

我的插件主要是解开token王header里面塞了三个参数,在调试过程中已经完成

image-20230714172830705

kong-plugin-mepjwt && luarocks install kong-plugin-mepjwt-0.1.0-1.all.rock

kong restart --v


# 校验

我的插件主要是解开token王header里面塞了三个参数,在调试过程中已经完成

[外链图片转存中...(img-CQqj9H2r-1689328795146)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/754542.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Framework岗位面试真题分享

Handler是Android中的消息处理机制,是一种线程间通信的解决方案,同时你也可以理解为它天然的为我们在主线程创建一个队列,队列中的消息顺序就是我们设置的延迟的时间,如果你想在Android中实现一个队列的功能,不妨第一时…

【量化课程】02_1.宏观经济学基础概念

2.1_宏观经济学基础概念 文章目录 2.1_宏观经济学基础概念1. 宏观经济简单背景1.1 微观经济学时期1.2 宏观经济学开端1.3 宏观经济学研究的问题1.4 宏观经济与理财的联系 2. 宏观经济分析及关键指标2.1 教材中的宏观经济分析框架和指标2.1.1 国内生产总值GDP2.1.2 边际消费倾向…

vcruntime140.dll重新安装方法,vcruntime140.dll修复教程

vcruntime140.dll是Microsoft Visual C Redistributable的一部分,它是Windows操作系统上非常重要的一个动态链接库文件。这个文件包含了一些运行时库函数,用于支持运行在Windows上使用了Microsoft Visual C开发的软件。如果电脑系统中缺失vcruntime140.d…

【Unity面试篇】Unity 面试题总结甄选 |Unity性能优化 | ❤️持续更新❤️

前言 关于Unity面试题相关的所有知识点:🐱‍🏍2023年Unity面试题大全,共十万字面试题总结【收藏一篇足够面试,持续更新】为了方便大家可以重点复习某个模块,所以将各方面的知识点进行了拆分并更新整理了新…

SOEM_1(笔记,从别的博客文章学的笔记)

目录介绍: doc:帮助文档、 osal:主要是用于符合OSADL和实时进程创建。也就是说:发送EtherCAT数据包不能抖动太大,如果直接使用linux提供的原生线程,可能实时性无法满足。需要对Linux内核打上实时补丁&…

高等数学❤️第一章~第二节~极限❤️极限的概念与性质~数列极限详解

【精讲】高等数学中的数列极限解析 博主:命运之光的主页 专栏:高等数学 目录 导言 一、数列极限的定义 二、数列极限的判定方法 三、数列极限的性质 必需记忆知识点 例题(用于熟悉数列极限) 例题1 例题2 例题3 结论 导言…

【QQ好友列表展示-设置HeaderView Objective-C语言】

一、好,看一下,刚才我们这个btnGroupTitle的frame为什么是0 现在我们首先知道,当你程序一运行起来以后,你这里的self,就是 当你程序运行起来以后,这个headerView 的frame,默认应该是0的 就是我们看到的效果,它应该都是0 的 一开始都是0 的 那么其实也就是说,是这样…

Pruning 系列 (十)Pruning VGG 实战

环境 python 3.9numpy 1.24.1pytorch 2.0.0+cu117流程 一、 VGG 模型代码 # -*- coding: utf-8 -*- import torch import torch.nn as nndefault_cfg = {11: [64, M, 128, M, 256, 256, M, 512, 512, M, 512, 512],13: [64, 64, M, 128, 128, M, 256, 256, M, 512, 512, M, …

认识企业级定时任务Quartz

文章目录 前言一、实现一个Quartz的小案例1.创建一个maven项目2.添加Quartz依赖3.创建一个配置文件配置Quartz信息4.创建一个Job类继承Job接口5.编写主方法逻辑进行测试6.测试运行结果 二、Job和JobDetail总结 前言 目前仍有大部分企业仍在使用Quartz这种定时任务框架&#xf…

【分布式应用】ceph分布式存储

目录 一、存储基础1.1单机存储设备1.2单机存储的问题1.3分布式存储的类型 二、Ceph简介2.1Ceph 优势2.2Ceph 架构2.3Ceph核心组件OSD(Object Storage Daemon,守护进程 ceph-osd)PG(Placement Group 归置组)PoolMonitor…

【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析

实际上 Nginx 除了承担代理网关角色外还会应用于 7 层应用上的负载均衡,本课时重点讲解 Nginx 的负载均衡应用架构,及最常见的问题。 学前提示 Nginx 作为负载均衡是基于代理模式的基础之上,所以在学习本课时前,你需要对 Nginx …

Codeforces Round 884 (Div. 1 + Div. 2)(视频讲解A--D)

[TOC](Codeforces Round 884 (Div. 1 Div. 2)&#xff08;视频讲解A–D&#xff09;) 视频链接&#xff1a;Codeforces Round 884 (Div. 1 Div. 2)&#xff08;视频讲解A–D&#xff09; A Subtraction Game 1、 板书&#xff1a; 2、代码 #include<bits/stdc.h> #…

网络协议与攻击模拟-19-FTP协议

FTP 协议 1、了解 FTP 协议 2、使用在 Windows 操作系统上使用 serv - U 软件搭建 FTP 服务器 3、分析 FTP 流量 一、 FTP 协议 1、概念 FTP &#xff08;文件传输协议&#xff09;&#xff0c;由两部分组成&#xff1a;客户端&#xff0f;服务器 C / S 架构&#xff0c;应…

Uniapp 版本更新

文章目录 前言Uniapp更新确定接口是否能够使用基本代码封装更新软件区别 前言 软件发布之后更新是经常出现的需求。我们希望软件能够自动连网更新软件&#xff0c;而不是重新去手动安装一个apk安装包。不需要更新的软件只有两个&#xff0c;一个是微信小程序&#xff0c;另一个…

C++浅谈const

在学C的时候&#xff0c;必不可少的是const&#xff0c;他或许在C语言中是可有可无的&#xff0c;但是在C中绝对不是&#xff0c;我们在学习C语言的时候&#xff0c;我们知道的是&#xff0c;经常有人说加const是为了保证“安全”&#xff0c;那么&#xff0c;所谓的“安全”是…

MFC第十六天 CFileDialog、CEdit简介、(线程)进程的启动,以及Notepad的开发(托盘技术-->菜单功能)

文章目录 CCommonDialogCFileDialogCEdit托盘技术进程的启动附录1:启动线程方式附录2:MFC对话框的退出过程 CCommonDialog 通用对话框 CCommonDialog 这些对话框类封装 Windows 公共对话框。 它们提供了易于使用的复杂对话框实现。 CFileDialog 提供用于打开或保存文件的标准对…

使用Git上传大文件模型(超过100MB)教程

目录 modelscope官方教程 服务器拒绝的解决方案 检查.gitattributes文件 modelscope官方教程 我们

Amazon 上的数字孪生:使用 L3 预测性数字孪生来预测“行为”

在上一篇博文中&#xff0c;我们讨论了数字孪生的定义和框架&#xff0c;这与我们的客户在其应用中使用数字孪生的方式一致。我们将数字孪生定义为“单个物理系统的动态数字表示&#xff0c;它通过数据进行动态更新以模仿物理系统的真实结构、状态和行为&#xff0c;从而加快获…

Vue3+ts;枚举(enum);Partial全部可选/Pick选一部分/配置 svg 图标/unplugin-vue-components组件自动按需加载

项目的创建 使用 create-vue 脚手架创建项目。 1.执行创建命令 pnpm create vue # or npm init vuelatest # or yarn create vue2.选择项目依赖内容。 ✔ Project name: … //项目名 ✔ Add TypeScript? … No / Yes ✔ Add JSX Support? … No / Yes ✔ Add Vue Router …

macOS 开发 - 纯代码生成 Window

文章目录 1、创建项目删除项目自带 window创建 BaseWindowController 继承自 NSWindowController子 WC 继承 BaseWC个人更喜欢纯代码:控制力、方便复制,不用卡卡的打开 xib 这里不使用各种项目自带的 storyboard/xib,使用纯代码创建 window(controller) 本示例代码将创建如下…