开源星球:用utopia框架10行代码实现URI改写

图片

这是一个更简单的例子,展示如何用utopia框架不用reload nginx就能改写URI。

要让一个功能热加载其对应的配置,要做两方面:配置管理和配置使用。配置管理又要做配置存储和配置生效,但是呢配置存储前要做配置验证。因此我们可以这样设计:

任何一个功能要实现配置热加载只做3步:配置验证,配置生效,配置使用

之前的代码里,我们用utopia.lua这一个文件演示了IP黑名单功能,在这个例子里,我们实现更加接近生产级别的代码。

我们将utopia.lua重构成3个模块:

init.lua:入口文件
conf.lua:配置验证模块
http.lua:业务模块

其中热加载框已经在init.lua里实现了,开发者不用再关心,只需写自己有关的业务,以uri改写为例:

配置验证,检验是否为字符串类型:

# conf.lua    ...     uri = {        type = CONF.STRING,    },

    
配置生效,即加载到lua模块:

# http.luafunction _M.init_conf(value)    ...    if (value.uri) then        action.uri = value.uri;    endend


配置使用,请求过来时处理:

function _M.handle(r)    ...    if (action.uri) then        r.uri = action.uri;    endend​​​​​​​
就是这么简洁!

utopia项目开源:
https://github.com/hongzhidao/lua-utopia

目前是用它来展示基于nginx-http-lua-module解决nginx reload问题。它实现了配置热加载,让开发者基于它只写自己的业务功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值