我想使用nginx获取post请求内容,数据enctype是multipart / form-data。我使用了以下配置,nginx config:
upstream syy{
server 201.23.xx.xx;
}
server {
listen 443;
server_name localhost;
lua_need_request_body on;
location /test {
root html;
index index.html index.htm;
proxy_pass http://syy;
proxy_buffering off;
lua_code_cache off;
content_by_lua_file /usr/local/openresty/luasrc/att.lua;
}
lua文件:
function writefile(filename,info)
local file = assert(io.open(filename,"ab"))
file:write(info)
file:close()
end
ngx.req.read_body()
local value = "/home/tmp/"..os.date("%Y%m%d%H")..".att"
local data = ngx.req.get_post_args()
if data ~= nil then
if type(data) == "table" then
writefile(value,table.concat(data,",").."\n")
else
writefile(value,data.."\n")
end
end
但是当我访问测试网站时,我只得到一个空文件,就像这个login.jsp一样,这是一个空文件。浏览器提示我下载login.jsp。
非常感谢!答案 0 :(得分:0)
首先,不应该同时使用“proxy_pass”和“content_by_lua_file”。您可以使用proxy_pass或content_by_lua。这就是浏览器尝试下载文件而不是实际执行文件的原因。
不完全确定您要实现的目标,但您可能希望使用“rewrite_by_lua_file”而不是“content_by_lua_file”。在此阶段,您可以在反向代理请求之前进行一些操作。您还可以对您使用的代码段使用“access_by_lua *”,但这完全取决于您要使用的nginx功能。
rewrite_by_lua_file /usr/local/openresty/luasrc/att.lua;