调试lua脚本
ngx.log(ngx.ERR, "xxx")
日志会打印到/usr/local/nginx/logs/error.log
修改返回值时避免内容被截断
增加header_filter_by_lua 'ngx.header.content_length = nil';
注释后只返回原接口长度3,即ok\n。
lua脚本默认必须放在/usr/local/nginx目录下,否则会找不到。
modify_response脚本被触发3次。被调用多次的原因是,上游响应数据可能以HTTP 1.1 chunked方式传输。字符串类型值ngx.arg[1]表示上游响应数据,布尔类型值ngx.arg[2]表示是否已到达响应数据流的结尾。
gdb调试
b src/http/modules/ngx_http_chunked_filter_module.c:74
c
通过curl来发起请求
nginx.conf中加上header_filter_by_lua 'ngx.header.content_length = nil';
nginx.conf中不加header_filter_by_lua 'ngx.header.content_length = nil';
这里的3对应了后端服务返回值ok\n的长度
参考资料
https://github.com/openresty/lua-nginx-module#body_filter_by_lua_file
标签:header,lua,filter,Nginx,nginx,Lua,返回值,ngx From: https://www.cnblogs.com/WJQ2017/p/17778028.html