Может ли NGINX вызвать другую службу перед отправкой

Может ли NGINX вызвать другую службу перед отправкой

Мы используем NGINX в качестве обратного прокси-сервера, он перенаправляет внешние вызовы нашим внутренним микросервисам Java:

введите описание изображения здесь

Мы хотели бы добавить специальный сервис, который будет выполнять функцию "человека посередине", но только для части запроса. Его цель — декорировать исходный запрос (аутентификация, добавление/изменение заголовков HTTP, проверка прав доступа). "Декоративные задачи" включают в себя сложную бизнес-логику, которую нельзя настроить на самом NGINX.

Мы хотим, чтобы служба была вызвана первой, а затем переслала свой ответ (особенно заголовки HTTP!) как запрос к одному из микросервисов. Возможно также опционально вызывать отправленные службы с исходным телом, но с заголовками HTTP, возвращенными службой декоратора.

Когда служба возвращает ошибку HTTP, она должна вернуться непосредственно к вызывающей стороне без диспетчеризации.

Сервис реализован в виде приложения Java Spring Boot. Это обычный веб-сервис.

Можно ли настроить NGINX и как?

Чтобы было ясно: я не спрашиваю о том, как реализовать эту конкретную службу. Мне нужно только знать, можно ли (и как) настроить NGINX так, чтобы он вызывал другую службу перед отправкой вызова, и чтобы NGINX передавал заголовки (и, возможно, также тело, но не обязательно), возвращаемые этой службой, в вызов.

введите описание изображения здесь

решение1

Да, это возможно.

Взгляни наэтотпример. Короче говоря, вы можете использоватьauth_requestдиректива для извлечения желаемых дополнительных заголовков. Используйтеproxy_set_headerдля добавления дополнительных заголовков к основному запросу.

Связанный контент