如何在nginx中根据请求体内容重写响应?

我有一个要求,在nginx中根据请求体的内容(如"fruit":"apple")将响应重写为静态内容。

nginx location 配置如下:

尝试引用基于请求体内容的nginx条件代理配置,但是接收到401响应。

location ~* /getItems/fruits
{
    if ($request_body ~ (.*)apple(.*))
    {
        rewrite ^ /apple.json break;
    }

    if ($request_body ~* (.*)orange(.*))
    {
        rewrite ^ /orange.json break;
    }

    rewrite ^ 401 break;
}

期望结果 发送 "fruit":"apple" 应该返回 apple.json 发送 "fruit":"orange" 应该返回 orange.json

点赞