NGINX+;Lua多部分/表单数据如何只读文本POST参数并放弃文件上载?
我有一个小的NGINX+;Lua多部分/表单数据如何只读文本POST参数并放弃文件上载?,nginx,lua,http-post,multipartform-data,Nginx,Lua,Http Post,Multipartform Data,我有一个小的ngx_lua脚本,它通过post_action向Redis(lua resty Redis)收集一些使用统计信息,我只想收集文本参数并放弃文件上传 我的配置: worker_processes 1; error_log logs/error.log; daemon off; events { worker_connections 1024; } http { server { listen 8080; location / { pro
ngx_lua
脚本,它通过post_action
向Redis(lua resty Redis)收集一些使用统计信息,我只想收集文本参数并放弃文件上传
我的配置:
worker_processes 1;
error_log logs/error.log;
daemon off;
events {
worker_connections 1024;
}
http {
server {
listen 8080;
location / {
proxy_read_timeout 30s;
proxy_pass http://localhost:8081;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwaded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
post_action @post_action;
}
location /test {
content_by_lua_file capture.lua;
}
location @post_action {
internal;
content_by_lua_file capture.lua;
}
}
}
Lua脚本(简化):
当我收到包含文件和文本的请求时,脚本会崩溃,出现以下错误:
临时文件中的请求主体不受支持
通过忽略多部分请求进行修复。Nginx post\u操作与redis结合使用非常有效!离题,但您是如何使用LuaJit、LuaRedis和cjson模块编译Nginx的?它带有OpenResty,但我更喜欢使用标准的Nginx构建,只需要最少的模块集。Andrey,看一看,你可能知道一个答案,这样我就可以给你+100赏金,以防回答得很好OK,由于您的问题已经解决,并且您拥有Lua/Redis方面的专业知识,您会尝试回答问题吗?通过忽略多部分请求进行修复。Nginx post_操作与Redis的结合非常有效!离题,但您是如何使用LuaJit、LuaRedis和cjson模块编译Nginx的?它随OpenResty一起提供,但我更喜欢使用标准的Nginx构建,只需要最少的模块集。Andrey,看一看,你可能知道一个答案,这样我就可以给你+100奖金,以防回答得很好。好的,当你的问题得到解决,并且你有Lua/Redis方面的专业知识时,你会尝试回答这个问题吗?
local json = require "cjson"
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000)
local ok, err = red:connect("127.0.0.1", 6379)
if not ok then
ngx.say("failed to connect: ", err)
return
end
local data = {}
ngx.req.read_body()
local data = json.encode(ngx.req.get_post_args())
local ok, err = red:rpush("post_data", data)
if not ok then
ngx.say("failed to push request data: ", err)
return
end