Я хотел внести некоторые изменения в существующую конфигурацию 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 фактически принимает запрос JSON в POST. Когда я отправляю запрос после добавления блока lua, я получаю сообщение об ошибке «Недопустимый JSON: пустая строка», но он успешно записывает тело запроса в файл.
Я думаю, что этот блок lua удаляет тело запроса после его записи в файл. Я только хочу, чтобы этот блок местоположения работал как обычно, но в дополнение к записи тела запроса в файл.
Я использовал rewrite_by_lua_block вместо content_by_lua_block, и это сработало. В любом случае спасибо за ответ

proxy_passиcontent_by_lua_blockработают в фазе контента, вы можете использовать только один обработчик фазы контента, в этом случае, я думаю, вы можете использоватьaccess_by_lua_blockвместоcontent_by_lua_block