您的位置:首页 > 运维架构 > Nginx

Nginx记录post请求数据

2014-03-13 09:47 1361 查看
   


经过两三天的奋斗,终于搞定nginx log post数据的问题。
首先nginx除了在proxy_pass或fastcgi_pass的Location中读取request_body之外,都不会读取post数据。所以此处必须借助NginxLua模块。参见http://www.cnblogs.com/meteorx/p/3188647.html,但是几经折腾还是不行。

location ^~ /offline
{
lua_need_request_body on;

client_max_body_size 50k;
client_body_buffer_size 50k;
content_by_lua 'ngx.log(ngx.var.request_body)';
access_log  /opt/data/log/m_offline/nginx_access.log  pv_offline;
return 204;
}
最后在http://chaoslawful.iteye.com/blog/730463中找到了答案:由于 NginX 默认在处理请求前不自动读取 request body,所以目前必须显式借助 form-input-nginx 模块才能从该变量得到请求体,否则该变量内容始终为空!
location ^~ /offline
{
lua_need_request_body on;
set_form_input $data;
client_max_body_size 50k;
client_body_buffer_size 50k;
content_by_lua 'ngx.log(data)';
access_log  /opt/data/log/m_offline/nginx_access.log  pv_offline;
return 204;
}

安装:

export LUAJIT_LIB=/root/nginx_model/lua/lib
exportLUAJIT_INC=/root/nginx_model/lua/include/luajit-2.0
./configure--prefix=/root/nginx_model/nginx --with-http_realip_module--with-http_stub_status_module --with-http_ssl_module --with-zlib=/root/nginx_model/tools/zlib/1.2.3--with-openssl=/root/nginx_model/tools/openssl --with-pcre=/root/nginx_model/tools/pcre-8.12--add-module=/root/nginx_model/tools/nginx-upload-progress-module-0.9.0--add-module=/root/nginx_model/tools/ngx_cache_purge-1.3--add-module=/root/nginx_model/tools/headers-more-nginx-module-0.25 --add-module=/root/nginx_model/tools/ngx_devel_kit-0.2.19--add-module=/root/nginx_model/tools/echo-nginx-module-0.49 --add-module=/root/nginx_model/tools/lua-nginx-module-0.9.5rc2--add-module=/root/nginx_model/tools/form-input-nginx-module-0.07
注意:--with-zlib是源码安装  --add-module也是源码安装
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: