gpt4 book ai didi

spring-boot - Zuul 通过外部代理服务器路由请求

转载 作者:行者123 更新时间:2023-12-03 14:31:36 24 4
gpt4 key购买 nike

我们目前的项目需求是将一些请求路由到第三方外部api服务器。为此,我们使用基于 spring zuul 的路由器服务。

zuul:
routes
test:
path: /test/**
serviceId: test
url: http://my.api.server.com
test2:
path: /test2/**
serviceId: test2
url: http://my.api.server.com // but through an external proxy
现在的要求是,对于某些端点,对​​外部 api 服务器的请求已通过某些外部代理服务器路由,而不是我们拥有的,
如何通过 curl 做到这一点是:
curl <external_api_server>/api/v1/user -k \
-x tntqyhnhjym.sandbox.verygoodproxy.com:8080 \
-H "Content-type: application/json" \
-d '{"card_number": "tok_sandbox_t8VSoovCuHA779eJGZhKvg", ... }'

-x <proxy>通过给定的代理重定向请求。
如何通过 spring-zuul 服务器做到这一点?
有一个线索,我得到了吗? https://github.com/spring-cloud/spring-cloud-netflix/issues/2320 .不干净,因为我需要扩展 SimpleHostRoutingFilterzuul

最佳答案

选项 1 - 反向代理服务器(使用代理)
您可以设置一个反向代理 - 配置为通过代理。您的反向代理将使用参数(例如 java 或 nodejs)启动以使用外部代理。此反向代理将是一个不同的过程,它将通过您想要的代理传递所有请求。
您可以通过设置第二个 zuul 代理应用程序或通过 nodejs 反向代理( expressnode-http-proxy )来实现。
第二个zuul应用程序(仅适用于外部)
因此,如果您使用 zuul,您将使用以下内容制作第二个应用程序:

   test2:
path: /proxied-test2/**
serviceId: test2
url: http://my.api.server.com
然后,您将使用代理的参数和特定端口(例如 9200 )在同一台服务器上启动此服务器,例如
-Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
原始申请
在您的原始应用程序中,您会将您的路线替换为以下内容。
zuul:
routes
test:
path: /test/**
serviceId: test
url: http://my.api.server.com
test2:
path: /test2/**
serviceId: test2
url: http://localhost:9200/proxied-test2/

选项 2:使用可编写脚本的 http 代理服务器
您可以设置一个代理服务器,然后设置一些关于哪些请求应该通过代理路由以及哪些请求应该在没有代理的情况下工作的异常(exception)和规则。
第二步是将您的应用程序配置为使用在步骤 1 中指定的本地代理服务器。为此,您可以使用以下命令行参数:
-Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
我过去为代理服务器配置了排除列表,但我从未配置/编写过包含列表。在您的情况下,包含列表会更有意义,因此我将测试可编写脚本/可编程代理服务器,例如:
  • https://mitmproxy.org/ - 可通过 mitmdump 编写脚本
  • 关于spring-boot - Zuul 通过外部代理服务器路由请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64384901/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com