【问题标题】:Cannot access the microservice through the gateway无法通过网关访问微服务
【发布时间】:2017-07-26 14:22:28
【问题描述】:

我在 Spring 微服务和 zuul 配置方面没有经验,所以我需要一些帮助。

我有一个在 jhipster-registry 上运行的微服务,我正在尝试通过网关从我的应用程序访问该微服务。

在我的应用程序中,我在当前路线中有此服务:

如果我在我的应用程序作为 Spring Boot 应用程序启动时访问该服务,一切正常;但是当我在 tomcat 上部署我的应用程序时,相同的请求返回 404。

这里是zuul配置:

zuul:
    routes:
     assessmentapi: 
        path: /assessmentapi/**
        serviceId: assessmentapi
        url:  http://192.168.80.44:8081/assessment-api

和http获取请求

$http.get('/assessmentapi/main/....)

【问题讨论】:

  • 端点是否可以通过 swagger 访问?在“API”页面的网关上以管理员身份登录时,您可以访问 swagger-ui。在那里你可以在右上角的微服务之间切换。
  • 嘿,是的,它是可访问的,我附加的图像来自具有可用服务的网关

标签: spring jhipster microservices netflix-zuul api-gateway


【解决方案1】:

您不应该在配置中编写 URL 部分。正如我们在您的网关屏幕截图中看到的,由于 Eureka 和 Registry,网关已经知道服务的 IP。 IP 地址不应该进入配置,因为它们是动态确定的。

【讨论】:

  • 嘿 Pierre,如果我从配置中删除 url,我收到此错误 - 负载均衡器没有可用于客户端的服务器:assessmentapi 关于上一个问题:我将应用程序部署到 tomcat 的根目录中,然后工作正常,这意味着上下文路径上 / 之后的 application_name ,当应用程序部署在 tomcat 上时会导致问题。当应用程序部署在 tomcat 上时如何忽略 application_name ?谢谢
  • 您是否正在运行 JHipster Registry 并且您的应用程序可以在那里看到吗?忽略 application_name 是什么意思?
  • 是的,应用注册在 jhipster-registry 上,和微服务一样。可能我没有解释得很好,如果我以spring boot的形式启动应用程序,请求 $http.get('/assessmentapi/main/....) 返回成功 (localhost:8080) ,但如果我在tomcat localhost上启动: 8080/application_name 它与 404 一起使用。在 tomcat 的根目录中部署应用程序后,上下文路径为 localhost:8080/ 就可以了。
猜你喜欢
  • 2020-03-08
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 2021-02-01
  • 2019-01-17
  • 1970-01-01
相关资源
最近更新 更多