首页 > 解决方案 > Nginx content_by_lua_block 删除请求正文?

问题描述

我想对现有的 nginx 配置进行一些更改。我之前的配置是这样的:

    location /serviceprovider {

            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect off;
    }

然后我添加了 content_by_lua_block 如下:

 location /serviceprovider {

            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect off;

            content_by_lua_block{
                    ngx.req.read_body()
                    body = ngx.req.get_body_data()
                    file = io.open("/etc/nginx/test", "w")
                    file:write(body)
                    file:close()
            }
    }

我的 /serviceprovider 实际上在 POST 中接受 JSON 请求。当我在添加 lua 块后发送请求时,我收到错误消息“无效的 JSON:空字符串”,但它成功地将请求正文写入文件。

我认为这个 lua 块在将请求正文写入文件后会删除它。我只希望该位置块像往常一样工作,但除了将请求正文写入文件之外。

标签: nginxpostluarequestopenresty

解决方案


推荐阅读