搭建環(huán)境
這里就不一一介紹了網(wǎng)上 很多宛篇,我都是源碼安裝的,這里羅列出搭建的時(shí)候下載的一下包(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
我的需求是根據(jù) post 里面的參數(shù)路由到不同機(jī)器
例如: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'
現(xiàn)在配置 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 里面計(jì)算出
下面看 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
是不是很簡(jiǎn)單歌憨,我下載了一個(gè)cjson 的庫哑蔫, 這里要注意下拂封,由于我是自定義安裝的,所以需要package.cpath 指定下
是不是超簡(jiǎn)單,nginx + lua 搞起J呓妗0鹁浮!