当前位置: 首页 > 知识库问答 >
问题:

使用Spring Cloud访问来自微服务的外部IP

施自珍
2023-03-14

我正在尝试从我的一个微服务攻击外部服务。我使用Spring Cloud、Eureka注册表和Spring boot作为主框架。

Map<String, String> urlVariables = new HashMap<>();
    urlVariables.put("ip_address", IP);
    urlVariables.put("port", PORT);

    ResponseObject state =
            restTemplate.getForObject("http://{ip_address}:{port}/state/", ResponseObject.class, urlVariables);

在我看来,Spring Cloud将Ribbon作为Rest模板的HTTP客户端注入,当我尝试访问这个IP(例如:193.172.x.x)时,它会产生以下错误:

java.lang.IllegalStateException:在org.springframework.cloud.netflix.ribbon.ribbonclienttprequestfactor.createRequest(ribbonclienttprequestfactor.java:64)在org.springframework.http.client.support.httpaccessor.createRequest(httpaccessor.java:76)在org.springframework.web.client.resttemplate.doexecute(resttemplate.java:567)在

看起来Ribbon正在尝试寻找一个具有该名称的微服务实例,而不是在外面寻找。有没有办法配置Ribbon来寻找外部IP,还是只供内部使用?

共有1个答案

寿伟
2023-03-14

您正在注入一个@LoadBalanced版本的RESTTemplate。您必须确保您的RestTemplate是一个普通的模板。您可以使用new RestTemplate()创建它。如果是bean,只需添加一个限定符,以确保注入了RestTemplate的正确版本。

 类似资料:
  • 我有两个不同的微服务,将尤里卡作为服务注册表,现在我正在尝试从另一个微服务调用微服务,解析带有功能区的endpoint以进行客户端负载平衡。 服务A: 此服务公开一个终结点,并且应用程序.yml 如下所示: 调用服务A的服务B具有以下应用程序类: 控制器 服务 但我在尝试访问服务时遇到了一个异常: 对此有什么建议吗?

  • 我无法从外部访问我的服务。首先,这里是我的conf yaml文件: nginx-pod.yaml nginx-service.yaml metallb-config.yaml 然后我创建了集群。命令 打印: 一切正常,而且< code > ku bectl describe service/nginx-service 打印: curl命令在主服务器打印。接下来我试图从另一个网络打开,它不起作用,但

  • 这里的TYPO3留档https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/4-use-foreign-data-sources.html说,可以为extbase对象使用外部数据源:“这些外部数据源可能是来自同一个TYPO3数据库或网络服务的表。” 使用的数据映射器至少允许将对象映射到同一MySQL数据库中的任何表。 我对“或w

  • 这是一个一般的错误,但我无法找到问题和解决方案。我的本地主机()上的Minecraft服务器位于端口上。可以通过主机的内部IP(localhost和)访问它,但无法通过外部IP()访问它。 是的。我重新启动了主机。服务器上还说 上启动Minecraft服务器 所以这一定是真的。 我可以通过驻留在设备上的一个简单的node.js服务器来验证端口是否对HTTP开放。这可以通过在同一网络上的移动设备上访

  • 问题内容: 现在我不明白如何访问另一个模块上定义的服务状态? 我不应该对吗?但是我不知何故…或者这是正确的行为吗? 问题答案: 甲模块在配置和运行块的集合,其获得在引导过程中施加到该应用程序。模块可以列出其他模块作为它们的依存关系。根据模块上意味着 需要 将之前加载模块的需求 ,需要 加载的模块。 注入模块时,服务会在配置阶段进行注册,并且可以访问它们,因此总而言之,这是Angular中正确行为和

  • null 请帮助,因为我需要有这个基于自定义令牌的SSO启用,也不希望我的auth服务URL暴露在浏览器上。