美文网首页
nginx + lua 根据 POST 数据动态路由

nginx + lua 根据 POST 数据动态路由

作者: 1行者 | 来源:发表于2017-06-22 11:46 被阅读0次

搭建环境

这里就不一一介绍了网上 很多,我都是源码安装的,这里罗列出搭建的时候下载的一下包(centos)

nginx-1.12.0
ngx_devel_kit-0.3.0
lua-nginx-module-0.10.9rc6
LuaJIT-2.0.5
lua-cjson-2.1.0

我的需求是根据 post 里面的参数路由到不同机器

例如:curl -X POST -d '{"boxId":1}' 127.0.0.1:8000/hello
boxid=1 路由到 '127.0.0.1:9000'
boxid=2,3,.... 路由到 '127.0.0.1:10000'

现在配置 nginx

 server {
        listen       8000;

        location ^~ / {
                  default_type 'text/plain';

            content_by_lua 'ngx.say("hello, lua register")';
        }

        location /hello {
                #resolver 8.8.8.8;
                set $backend  '';
                rewrite_by_lua_file  conf/lua/ivr.lua;
                proxy_pass http://$backend;

                #curl -X POST  -d '{"boxId":1}' 127.0.0.1:8000/hello 
                #curl -X POST  -d '{"boxId":2}' 127.0.0.1:8000/hello
        }
    }

backend 就是要路由的地址,在ivr.lua 里面计算出
下面看 ivr.lua

package.cpath = '/nginx/cjson/lib/lua/5.1/?.so;'
--json
local cjson = require "cjson"
ngx.req.read_body()
local body_data = ngx.req.get_body_data()
local unjson = cjson.decode(body_data)
if  unjson["boxId"] == 1 then
        res = '127.0.0.1:9000'
else
        res = '127.0.0.1:10000'
end
ngx.var.backend = res

是不是很简单,我下载了一个cjson 的库, 这里要注意下,由于我是自定义安装的,所以需要package.cpath 指定下

是不是超简单,nginx + lua 搞起!!!

相关文章

  • nginx + lua 根据 POST 数据动态路由

    搭建环境 这里就不一一介绍了网上 很多,我都是源码安装的,这里罗列出搭建的时候下载的一下包(centos) ngi...

  • wrk压力测试POST请求

    1. 编写lua脚本,填写post的数据, 如 post.lua wrk.method = "POST" wrk....

  • nodejs_路由

    路由:路径由来。 为路由提供请求的 URL 和其他需要的 GET 及 POST 参数,随后路由需要根据这些数据来执...

  • NGINX和LUA

    Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码...

  • node.js(十三)

    Node.js 路由我们要为路由提供请求的URL和其他需要的GET及POST参数,随后路由需要根据这些数据来执行相...

  • 基于Nginx&Lua 和Netflix Eureka的

    Zuul for Nginx&Lua 基于Nginx和Lua module。需要安装Nginx Lua模块或者直接...

  • nodejs笔记6(路由)

    我们要为路由提供请求的 URL 和其他需要的 GET 及 POST 参数,随后路由需要根据这些数据来执行相应的代码...

  • 网关调研

    网关gatewayshenyukong核心技术javajava基于Nginx+Lua管理界面无有konga动态更新...

  • 知识大杂烩系列- 收藏集 - 掘金

    Nginx 通过 Lua + Redis 实现动态封禁 IP - 后端 - 掘金一、背景 为了封禁某些爬虫或者恶意...

  • Agent Telegraf Plugin inputs.log

    初衷 系统中使用lua扩展Nginx,实现Client请求Server的统一接入服务(鉴权,路由)。监控中心会需要...

网友评论

      本文标题:nginx + lua 根据 POST 数据动态路由

      本文链接:https://www.haomeiwen.com/subject/sttfcxtx.html