nginx + lua 根据post请求参数做转发

        location / {
             content_by_lua_file "lua/dispatch.lua";
         }


        location @user_profile_api12 {

         content_by_lua_block {
                 ngx.say("xxxx")
         }
         }


        location @user_profile_api3 {

         content_by_lua_block {
                 ngx.say("hahahah")
         }
        }



lua/dispatch.lua

-------------------------------

local request_method = ngx.var.request_method
local arg=nil
if request_method == "GET" then
         arg = ngx.req.get_uri_args()['params']
elseif request_method == "POST" then
         ngx.req.read_body()
         arg = ngx.req.get_post_args()['params']
end

if arg ~= nil then
   local json = require("cjson")
   local jsonObj = json.decode(arg)
   local profile = jsonObj['query']['user_profile']
   local years = jsonObj['query']['year_id']

  if years ~= nil and profile ~= nil and profile[1] == 'bought_record' then
         ngx.exec('@user_profile_api3') 
   elseif profile ~= nil and profile[1] == 'xubao' then
         ngx.exec('@user_profile_api3')
   else 
         ngx.exec('@user_profile_api12')
   end
end

原文地址:https://www.cnblogs.com/maoxiangyi/p/11611383.html