日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

idea安装lua插件_KONG网关 — 插件开发

發(fā)布時間:2023/12/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 idea安装lua插件_KONG网关 — 插件开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

雖然kong提供了那么多的插件,但是不可能百分百滿足了對于網(wǎng)關(guān)的需求,在很多系統(tǒng)中不可能吧用戶體系用到kong提供的權(quán)限驗證體系,包括對于一套系統(tǒng)完整的RBAC系統(tǒng)大家都有不同的改進(jìn),以及請求加密參數(shù)校驗等等,所以對于擴(kuò)展性對于網(wǎng)關(guān)的定義需要有一定的能力的,kong是通過nginx+lua開發(fā)的通過lua腳本就可以擴(kuò)展插件來完成網(wǎng)關(guān)的目的

附上:

喵了個咪的博客:w-blog.cn

kong官網(wǎng):https://konghq.com/

konga官網(wǎng):https://github.com/pantsel/konga

PS:Kong版本必須 >= 1.0.0才能正常使用konga

一,開發(fā)環(huán)境準(zhǔn)備

首先需要開發(fā)環(huán)境,docker并不適合作為開發(fā)環(huán)境來使用,容器重啟內(nèi)容丟失等問題對kong-lua插件開發(fā)來說不友好,容器內(nèi)部的結(jié)構(gòu)也存在區(qū)別,所以我們需要使用liunx機(jī)器來進(jìn)行開發(fā)

wget https://bintray.com/kong/kong-community-edition-rpm/download_file?file_path=centos/7/kong-community-edition-1.0.3.el7.noarch.rpm sudo yum install epel-release sudo yum install kong-community-edition-1.0.3.el7.noarch.rpm --nogpgcheck kong version 1.0.3

準(zhǔn)備數(shù)據(jù)庫

mkdir -p /app/docker/postgres cd /app/docker/postgres/ vim docker-compose.yml version: '2.1' services:db:image: postgres:9.6environment:POSTGRES_DB: kongPOSTGRES_PASSWORD: kongPOSTGRES_USER: konghealthcheck:test: ["CMD", "pg_isready", "-U", "kong"]interval: 30stimeout: 30sretries: 3restart: on-failurestdin_open: truetty: trueports:- "5432:5432/tcp" docker-compose up -d

初始化配置文件

cp /etc/kong/kong.conf.default /etc/kong/kong.conf vim /etc/kong/kong.conf

按照之前運(yùn)營容器時候注入的環(huán)境變量來修改配置文件

admin_access_log = logs/admin_access.log admin_error_log = logs/error.log admin_listen = 0.0.0.0:8001 database = postgres pg_database = kong pg_host = 127.0.0.1 pg_password = kong pg_user = kong

啟動kong,初始化數(shù)據(jù)庫

kong migrations bootstrap -c /etc/kong/kong.conf

啟動kong

kong start -c /etc/kong/kong.conf

訪問kong

curl localhost:8001

運(yùn)行konga

docker run -p 1337:1337 --name konga -e "NODE_ENV=production" pantsel/konga:0.14.1

最后就是使用你常用的idea裝好lua擴(kuò)展就可以了

二、開發(fā)擴(kuò)展

這兩個文件是必須有的

handler.lua // 一個實現(xiàn)的接口。每個函數(shù)都由Kong在請求的生命周期中的所需時刻運(yùn)行。schema.lua // 保存插件配置的架構(gòu),以便用戶只能輸入有效的配置值。

還有其他的擴(kuò)展文件

complete-plugin ├── api.lua // 定義Admin API中可用的端點列表,以與插件處理的實體自定義實體進(jìn)行交互。 ├── daos.lua // 定義DAO(數(shù)據(jù)庫訪問對象)列表,這些DAO是插件所需并存儲在數(shù)據(jù)存儲區(qū)中的自定義實體的抽象。 ├── handler.lua ├── migrations // 給定數(shù)據(jù)存儲的相應(yīng)遷移。只有當(dāng)您的插件必須在數(shù)據(jù)庫中存儲自定義實體并通過 daos.lua定義的其中一個DAO與它們進(jìn)行交互時,才需要進(jìn)行遷移。 │ ├── cassandra.lua │ └── postgres.lua └── schema.lua mkdir http-rewrite cd http-rewrite vim handler.lua vim schema.lua return {no_consumer = true,fields = {regex = { type = "string" },replacement = { type = "string" },flag = {type = "string"},},self_check = function(schema, plugin_t, dao, is_update)-- TODO: add checkreturn trueend } local BasePlugin = require "kong.plugins.base_plugin" local json = require("cjson") local RewriteHandler = BasePlugin:extend() local ngx = ngxRewriteHandler.PRIORITY = 2000 RewriteHandler.VERSION = "0.1.0"-- 傳入?yún)?shù)conf是這個插件存放在數(shù)據(jù)庫中配置 function RewriteHandler:access(conf)RewriteHandler.super.access(self)local host = ngx.var.hostngx.log(ngx.DEBUG, "http-rewrite plugin, host is: ", host, " ,uri is: ",ngx.var.request_uri, " ,config is: ", json.encode(conf))local replace,n,err = ngx.re.sub(ngx.var.request_uri, conf.regex, conf.replacement)if replace and n == 0 thenreturnendif err thenngx.log(ngx.ERR, "http-rewrite plugin, ngx.re.sub err: ",err, " ,host is: ", host, " ,uri is: ",ngx.var.request_uri, " ,config is: ", json.encode(conf))returnendngx.log(ngx.DEBUG, "http-rewrite plugin, replace is: ",replace)if conf.flag == "redirect" thenngx.redirect(replace,302)elseif conf.flag == "permanent" thenngx.redirect(replace,301)end endfunction RewriteHandler:new()RewriteHandler.super.new(self, "http-rewrite") endreturn RewriteHandler ## 在使用新插件之前,需要更新一下數(shù)據(jù)庫: kong migrations up -c /etc/kong/kong.conf kong start -c /etc/kong/kong.conf

開啟插件

此時就開啟了我們自己開發(fā)的插件了

也可以通過konga工具開啟

配置可以在其中看到

此時訪問http://172.16.1.82:8000/abc/test會被跳轉(zhuǎn)到http://172.16.1.82:8000/redirect//test

到這里就已經(jīng)完成了一個基礎(chǔ)插件的開發(fā),更多的一些系統(tǒng)函數(shù)可以通過官方插件開發(fā)手冊來使用

總結(jié)

以上是生活随笔為你收集整理的idea安装lua插件_KONG网关 — 插件开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。