我们使用 NGINX 作为反向代理,它将外部的调用调度到我们内部的 Java 微服务:
我们想添加一个特殊服务,充当“中间人”,但只用于请求部分。它的目的是修饰原始请求(身份验证、添加/修改 HTTP 标头、验证访问权限)。“修饰任务”涉及复杂的业务逻辑,无法在 NGINX 本身上配置。
我们希望首先调用该服务,然后将其响应(尤其是 HTTP 标头!)作为请求转发给其中一个微服务。也可以选择使用原始主体调用已调度的服务,但使用装饰器服务返回的 HTTP 标头。
当服务返回 HTTP 错误时,它应该直接返回给调用者,而无需调度。
该服务以 Java Spring Boot 应用程序的形式实现。它是一种常规 Web 服务。
是否可以在 NGINX 中进行配置?如何配置?
需要明确的是:我不是在问如何实现这个特定的服务。我需要的只是知道是否可以(以及如何)配置 NGINX,以便在分派调用之前调用另一个服务,并且 NGINX 将从该服务返回的标头(可能还有正文,但不一定)传递给调用。
答案1
对的,这是可能的。
看一眼这例如。简而言之,您可以使用授权请求指令来获取所需的附加标头。使用proxy_set_header向主请求添加附加标头。