Этот вопрос относится к обработке запросов HTTP GET. Упомянутое ниже тело является телом ответа (не телом запроса).
Я ищу способ использования nginx для проверки всего тела ответа перед возвратом заголовка и ответа клиенту на основе результатов проверки.
Я исследовал фильтр подмодуля http://nginx.org/en/docs/http/ngx_http_sub_module.html,, но реализованный шаблон не может быть повторно использован для моих целей.
Я также исследовал пример модуля https://www.nginx.com/resources/wiki/extending/examples/body_filter/,, но мне не удалось заставить этот модуль работать. Возвращение кода ошибки из фильтра тела слишком поздно и запрос застревает после того, как заголовок 200 уже был отправлен.
То, чего я хочу достичь, это следующее:
- Удерживайте запрос клиента и выполните следующую проверку обработчика
(может быть асинхронным обработчиком)
- Receive the response header (do not forward it yet)
- Receive and inspect/parse the response body
- Depending on the result of the inspection: pass/fail
+ pass:
* send the response header to the client,
* send the response body buffers to the client
+ fail:
* send an error code response header to the client,
* discard the response body buffers
Заранее спасибо