
Wir verwenden NGINX als Reverse-Proxy, der die Anrufe von außen an unsere internen Java-Microservices weiterleitet:
Wir möchten einen speziellen Dienst hinzufügen, der als „Man-in-the-Middle“ dient, aber nur für den Anfrageteil. Sein Zweck besteht darin, die ursprüngliche Anfrage zu dekorieren (Authentifizierung, Hinzufügen/Ändern von HTTP-Headern, Überprüfen der Zugriffsrechte). Die „dekorativen Aufgaben“ beinhalten eine komplizierte Geschäftslogik, die auf NGINX selbst nicht konfiguriert werden kann.
Wir möchten, dass der Dienst zuerst aufgerufen wird und dann seine Antwort (insbesondere die HTTP-Header!) als Anfrage an einen der Microservices weiterleitet. Optional können die versendeten Dienste auch mit dem Originaltext aufgerufen werden, aber mit den vom Decorator-Dienst zurückgegebenen HTTP-Headern.
Wenn der Dienst einen HTTP-Fehler zurückgibt, sollte er ohne Weiterleitung direkt zum Anrufer zurückkehren.
Der Dienst ist als Java Spring Boot-Anwendung implementiert. Es handelt sich um einen regulären Webdienst.
Ist eine Konfiguration in NGINX möglich und wenn ja, wie?
Um es klarzustellen: Ich frage nicht, wie dieser spezielle Dienst implementiert wird. Ich möchte nur wissen, ob (und wie) NGINX so konfiguriert werden kann, dass es vor dem Weiterleiten des Anrufs einen anderen Dienst aufruft, und dass NGINX die von diesem Dienst zurückgegebenen Header (und vielleicht auch den Text, aber nicht unbedingt) an den Anrufer weitergibt.
Antwort1
Ja, es ist möglich.
Schauen Sie sich anDasBeispiel. Kurz gesagt können Sie verwendenAuthentifizierungsanforderung, um die gewünschten zusätzlichen Header abzurufen. Verwenden SieProxy_Header festlegenum der Hauptanforderung zusätzliche Header hinzuzufügen.