ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

通过Nginx和lua实现对请求体的修改

2021-04-24 10:02:18  阅读:232  来源: 互联网

标签:end 请求 Nginx -- local xxx lua json ngx


Nginx+Lua实现对post请求参数的修改,json格式的
Nginx配置

location / {
...
	if ($request_method = "POST") {        
		access_by_lua_file    /xxx/xxx/test.lua;
	} 
}

Lua配置
test.lua

function set_Request_body()
    ngx.req.read_body()
    local retTable = {}
    local jsonStr = nil
    local ok = nil
    local json = require("cjson")
    local oldData = ngx.req.get_body_data()              --获取原先的请求体,字符串格式
    if (oldData ~= nuil) then                            --判断原先是否有请求体
            ok, retTable = pcall(cjson.decode, oldData ) --判断原先数据是否是json格式
            if not ok then
                ngx.log(ngx.ERR, 'post data is not json!', oldData )
    		--如果不是json格式,做xxx操作
            else
                --是json格式,做xxx操作
   	    end
    else
            --原先没有请求体的情况,做xxx操作
            retTable["test1"] = "test1"                  --以json的格式添加一个数据
    end
    
    jsonStr = cjson.encode(retTable)                     --将数组转换为字符串
    if  (jsonStr ~= nuil) then
            ngx.req.set_body_data(jsonStr)               --将字符串设置为请求体
    end
end

if ngx.req.get_method() == "POST" then
        set_Request_Body()
end

标签:end,请求,Nginx,--,local,xxx,lua,json,ngx
来源: https://blog.csdn.net/yxh_1_/article/details/109183750

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有