skipper 支持基于lua 的script 扩展,同时设计比较方便的filter模型,让我们可以方便
进行request、response的扩展,结合lua 社区的包我们可以快速的进行新功能的开发

环境准备

  • docker-compose 文件
    测试功能,集成了监控功能
version: "3"
services:
skipper:
#image: dalongrong/skipper:latest
build: ./
image: dalongrong/skipper-docker-build-luarocks
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"
  • skipper dockerfile
    使用dockerfile mutilstage 进行构建,拷贝现有二进制包到一个luarocks的容器,
    同时添加了一个uuid 的模块
FROM dalongrong/skipper:latest as build

FROM abaez/luarocks:lua5.1
LABEL author="1141591465@qq.com"
WORKDIR /
COPY --from=build /usr/bin/skipper /skipper
COPY --from=build /usr/bin/eskip /eskip
ENV PATH=$PATH:/
RUN luarocks install uuid
  • uuid lua 包的使用
    app.lua
local uuid = require("uuid") --- 引用包
local json = require("json")
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";
-- local user = {
-- name="dalong",
-- age=33
-- }
local tokeninfo = {
token=uuid(), --- 使用uuid 包
status=200
}
ctx.serve({
status_code=200,
header= {
['Content-Type']="application/json",
lua_token=uuid()
},
body=json.encode(tokeninfo)
})
end
  • 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";
## lua 支持
app: Path("/users/**") -> lua("/app.lua", "myparam=foo", "other=bar") -> "http://www.baidu.com";
static: Path("/static/*") -> static("/static/", "/root") -> <shunt>;

运行&&测试

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

说明

集成lua 模块,我们可以方便进行系统的扩展,很方便

参考资料

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

 
 
 
 

skipper lua 添加luarocks 包管理的更多相关文章

  1. luarocks 包管理工具

    安装方式:wget http://luarocks.org/releases/luarocks-2.2.2.tar.gz tar zxvf luarocks-2.2.2.tar.gz cd luaro ...

  2. MVC中的 程序集添加-----程序包管理器控制台

    Install-Package Microsoft.AspNet.WebApi.Owin -Version Install-Package Microsoft.Owin.Host.SystemWeb ...

  3. Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区

    Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区 Lua包管理工具Luarocks详解

  4. cetnos7下openresty使用luarocks 进行lua的包管理

    先安装一下包管理工具 yum install luarocks lua-devel -y luarocks install lpack ln -s /usr/lib64/lua /usr/local/ ...

  5. Openresty 学习笔记(四)lualocks包管理器安装使用

    Luarocks是一个Lua包管理器,基于Lua语言开发,提供一个命令行的方式来管理Lua包依赖.安装第三方Lua包等,社区比较流行的包管理器之一,另还有一个LuaDist,Luarocks的包数量比 ...

  6. Linux 程序包管理-YUM

    前端工具YUM管理程序包:  rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...

  7. [视频教程] 包管理器方式安装使用openresty新手上路

    OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态Web应用.Web ...

  8. Xmake 和 C/C++ 包管理

    Xmake 是一个基于 Lua 的轻量级跨平台构建工具,关于 Xmake 与构建系统的介绍,我们已经在之前的文章中做了详细的介绍:C/C++ 构建系统,我用 xmake. 如果大家已经对 Xmake ...

  9. ASP.NET Core 静态文件及JS包管理器(npm, Bower)的使用

    在 ASP.NET Core 中添加静态文件 虽然ASP.NET主要大都做着后端的事情,但前端的一些静态文件也是很重要的.在ASP.NET Core中要启用静态文件,需要Microsoft.AspNe ...

随机推荐

  1. CAN总线(1)--初探(更新中)

    前言: CAN总线可以控制可以使用Xilinx中IP核来直接实现,也可以使用专用的CAN芯片(例如:SJA1000)通过单片机和FPGA驱动控制来实现: 目前是使用控制器SJA1000来进行实现: C ...

  2. C Runtime Library、C  Runtime

    C Runtime Library.C Runtime   1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些 ...

  3. mysql增删改查练习

    Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...

  4. Day16作业及默写

    hashlib模块,写函数校验两个文件是否内容相同(如果这两个文件很大) import hashlib md5 = hashlib.md5() md5.update(b'hello') md5.upd ...

  5. 部署php的正确姿势

    1. 更新源 apt-get update 2.安装apache apt-get install apache2 ubuntu下apache2虚拟主机配置 cd /etc/apache2/sites- ...

  6. 反转链表(python3)

    问题描述: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL解法1: ...

  7. ecmall 如何新增挂件

    不知到该怎么开始介绍,就直接说了,比如要在商城首页上添加一个自己开发测试用的挂件 1.找到模版文件夹的index.html,路径:themes/mall/default/index.html 自己选一 ...

  8. 2.24 js处理内嵌div滚动条

    2.24 js处理内嵌div滚动条 前言    前面有篇专门用js解决了浏览器滚动条的问题,生活总是多姿多彩,有的滚动条就在页面上,这时候又得仰仗js大哥来解决啦.一.内嵌滚动条    1.下面这张图 ...

  9. 微信小程序--地图上添加图片

    如何在微信小程序地图添加上,添加图片? 在微信小程序中,地图的层级最高,所以我们没有办法,通过定位,在地图上添加图片等信息; 处理办法: 添加控件:controls; 其中有个属性position,进 ...

  10. php-xdebug(安装)

    我虽然是前端人员,但是我也挺喜欢服务端语言的,我不是说完全不会服务端语言,主要是没有实践经验,实践经验不一样非要公司的项目,自己也可以去模仿一些项目,那也是实践的.所以就有了想法,自己写个项目,从后端 ...