O NGINX pode chamar outro serviço antes de despachar?

O NGINX pode chamar outro serviço antes de despachar?

Estamos usando o NGINX como proxy reverso, ele despacha as chamadas de fora para nossos microsserviços Java internos:

insira a descrição da imagem aqui

Gostaríamos de adicionar um serviço especial que serviria como um “man-in-the middle”, mas apenas para a parte de solicitação. Seu objetivo é decorar a solicitação original (autenticação, adicionar/modificar cabeçalhos HTTP, verificar direitos de acesso). As “tarefas decorativas” envolvem uma lógica de negócios complicada que não pode ser configurada no próprio NGINX.

Queremos que o serviço seja chamado primeiro e depois encaminhe sua resposta (especialmente os cabeçalhos HTTP!) Como uma solicitação para um dos microsserviços. Talvez também, opcionalmente, chamar os serviços despachados com o corpo original, mas com os cabeçalhos HTTP retornados do serviço decorador.

Quando o serviço retornar um erro HTTP, ele deverá retornar diretamente ao chamador sem despachar.

O serviço é implementado como um aplicativo Java Spring Boot. É um serviço web normal.

É possível configurar no NGINX e como?

Para ser claro: não estou perguntando como implementar este serviço específico. O que eu preciso é apenas saber se (e como) o NGINX pode ser configurado para chamar outro serviço antes de despachar a chamada, e que o NGINX passe os cabeçalhos (e talvez também o corpo, mas não necessariamente) retornados deste serviço para a chamada.

insira a descrição da imagem aqui

Responder1

Sim, é possível.

Dê uma olhadaesseexemplo. Resumindo você pode usarsolicitação_authdiretiva para buscar os cabeçalhos adicionais desejados. Usarproxy_set_headerpara adicionar cabeçalhos adicionais à solicitação principal.

informação relacionada