
Estamos usando o NGINX como proxy reverso, ele despacha as chamadas de fora para nossos microsserviços Java internos:
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.
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.