Nginx lua - 重写url,转发原始POST数据/多部分表单数据

时间:2015-06-15 08:41:02

标签: nginx lua

Nginx及其Lua扩展使得在适当调度请求之前检查和操作请求非常容易。在我当前的项目中,我捕获到达指定文件夹位置的所有请求,检查请求,然后由完全不同的脚本执行。我要做的事情

/ etc / nginx / sites-available / default Configuration

location /myfolder{
 rewrite_by_lua_file "/path/to/rewrite.lua";
 lua_need_request_body "on";
}

在rewrite.lua

ngx.req.set_header('special','my_special-header');  
local data = ngx.req.get_body_data();
ngx.req.set_body_data(data);

最后重定向到另一个位置

ngx.req.set_uri("/myother/index.php",true);

对于简单的GET请求或带有一两项附加POST数据的POST请求,这种方法效果很好。我无法解决的问题是这个。比如说我在原始请求中从数据发送多部分。

ngx.req.get_body_data()

实际上获取原始请求正文。如果我将此转发至/myother/index.php,我可以将其检索为file_get_contents('php://input')。这没关系,但还不够好。我不想在这里处理原始输入。我宁愿能够使用标准的PHP $ _POST和$ _FILES变量。但是,它们是空的,它们的内容作为文本字符串存在于正文中。

有没有办法告诉Nginx当我将用户请求受到Lua的一些处理之前将其转移到另一个URL之前它应该只传递POST / PUT请求字段以及整个原始$ _FILES阵列

我非常感谢任何帮助

0 个答案:

没有答案