skipper lua 脚本支持

skipper 对于lua 脚本的支持是通过gopher-lua,支持基本上大部分的lua特性
说明:项目使用docker-compose 运行

环境准备

  • docker-compose 文件
version: "3"
services:
  skipper:
    image: dalongrong/skipper:latest
    ports:
    - "9090:9090"
    - "9911:9911"
    volumes:
    - "./router.eskip:/router.eskip"
    - "./app.lua:/app.lua"
    command: skipper -enable-ratelimits -enable-prometheus-metrics -routes-file router.eskip
  g:
    image: grafana/grafana
    ports:
    - "3000:3000"
  web:
    image: nginx
    ports:
    - "8099:80"
  p:
    image: prom/prometheus
    volumes:
    - "./prometheus.yml:/etc/prometheus/prometheus.yml"
    ports:
    - "9091:9090"
  • router 配置
hello: Path("/report/**") ->compress("text/html")-> corsOrigin()->setResponseHeader("TOKEN","dalongdemo")->responseCookie("test-session", "abc", 31536000)->
setRequestHeader("TOKEN","dalongdemo")-> "http://10.10.17.21:9000/report";
app: Path("/**") -> lua("/app.lua", "myparam=foo", "other=bar") -> "http://10.15.0.80"
  • lua 脚本
    在response 阶段,添加header
function request(ctx, params)
    -- ctx.serve({
    -- status_code=302,
    -- header={
    -- location="http://www.baidu.com/",
    -- },
    -- })
    ctx.request.header["user_token"]="request_token"
end

function response(ctx, params)
    ctx.response.header["lua_token"]="dalongdemo";
end

运行&&测试

  • 启动
docker-compose up -d
  • 测试

说明

目前已经内置了一些可用的模块 http json url base64,同时对于lua 标准模块也支持,模块查找规则
比如 require("mod")

/mod.lua, /usr/local/share/lua/5.1/mod.lua and /usr/local/share/lua/5.1/mod/init.lua)

参考资料

https://opensource.zalando.com/skipper/reference/scripts/
https://github.com/rongfengliang/skipper-prometheus-docker-compose

posted on   荣锋亮  阅读(331)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2014-12-04 OPENQUERY用法以及使用需要注意的地方

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示