
Estamos utilizando NGINX como proxy inverso, envía las llamadas desde el exterior a nuestros microservicios internos de Java:
Nos gustaría añadir un servicio especial que sirviera de "intermediario", pero sólo para la parte de la solicitud. Su propósito es decorar la solicitud original (autenticación, agregar/modificar encabezados HTTP, verificar derechos de acceso). Las "tareas decorativas" implican una lógica empresarial complicada que no se puede configurar en el propio NGINX.
Queremos que el servicio se llame primero y luego reenvíe su respuesta (¡especialmente los encabezados HTTP!) como una solicitud a uno de los microservicios. Tal vez también, opcionalmente, llamar a los servicios enviados con el cuerpo original, pero con los encabezados HTTP devueltos por el servicio decorador.
Cuando el servicio devuelve un error HTTP, debe regresar directamente a la persona que llama sin realizar el envío.
El servicio se implementa como una aplicación Java Spring Boot. Es un servicio web habitual.
¿Es posible configurarlo en NGINX y cómo?
Para ser claros: no estoy preguntando cómo implementar este servicio específico. Lo que necesito es solo saber si (y cómo) se puede configurar NGINX para que llame a otro servicio antes de enviar la llamada, y que NGINX pase los encabezados (y tal vez también el cuerpo, pero no necesariamente) devueltos por este servicio a la llamada.
Respuesta1
Sí, es posible.
Echa un vistazo aesteejemplo. En resumen puedes usarsolicitud_autenticacióndirectiva para recuperar los encabezados adicionales deseados. Usarencabezado_conjunto_proxypara agregar encabezados adicionales a la solicitud principal.