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

zuul eureka服务id重定向

戚默
2023-03-14

我只有很少的spring boot微服务,它们是通过云环境部署到JBoss的。这些引导服务是在Eureka服务器中注册自己的Eureka客户端。下面是一个例子:

eureka:
  client:
    healthcheck:
        enabled: true
    serviceUrl:
       defaultZone: ${DISCOVERY_URL:http://localhost:8761}/eureka/


  instance:
    ip-address: 127.0.0.1
    appname: user-regn-service-app
    home-page-url-path: /user-regn-service-app

它用user-regn-service-app Eureka主页的名称向Eureka注册应用程序

wildfly服务器在8080处运行,而user-regn-service-app部署在上下文路径/user-regn-service-app处。所以rest api如下所示

localhost:8080/user-regn-service-app/regnUser

当我使用zuul作为api网关时,配置如下

zuul:
  prefix: /api
  routes:
    test:
      path: /test/**
      service-id: USER-REGN-SERVICE-APP
      strip-prefix: true


ribbon:
  eureka:
    enabled: true

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
    registerWithEureka: false

http://localhost:8765/api/user-regn-service-app/user-regn-service-app/regnuser->重定向到用户注册。

预期行为:http://localhost:8765/api/test/regnuser应重定向到用户注册。

我几乎尝试了所有的组合,我从Zuul和Eureka之间的博客得到的,以获得以下的完成,但没有运气。如果我错过了什么,请给我忠告。

@Component
public class ZuulApiFilter extends ZuulFilter{

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        System.out.println("original"+ ctx.get("requestURI"));
        HttpServletRequest request = ctx.getRequest();
        String requestURI = request.getRequestURI();
        String contextAwareURI=requestURI.concat("user-regn-service-app/");
        ctx.set("requestURI", contextAwareURI);
        return null;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public int filterOrder() {
        return 1;
    }

    @Override
    public String filterType() {
        return "pre";
    }

}

共有1个答案

赵驰
2023-03-14

请删除zuulapifilter并尝试设置:

带前缀:false

并尝试将请求发送到:

...
eureka:
  client:
    registerWithEureka: false
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://localhost:8000/eureka/

# ribbon.eureka.enabled: false
zuul:
  ignoredServices: "*"
  routes:
    zuulDemo1:
      path: /zuul1/**
# serviceId as registed with Eureka. Enabled and used when ribbon.eureka.enabled is true.
      serviceId: demo-zuul-api1
# zuul.routes.<the route>.url used when ribbon.eureka.enabled is false, serviceId is disabled.
#      url: http://localhost:8600/
# stripPrefix set to true if context path is set to /
      stripPrefix: true
...

实际上,我的Zuul服务器回购是公开的,可以在https://bitbucket.org/asimio/zuulserver上获得,最近的一篇博客文章可以在http://tech.asimio.net/2017/10/10/routing-requests-and-dynamic-refreshing-routes-using-spring-cloud-zuul-server.html上获得

另外,Zuul服务是否也使用了/以外的应用程序上下文?如果是,您是否可以尝试通过Zuul发送请求,地址是:http:// : / /API/test/....

 类似资料:
  • 我有一个本地网站。该网站由docker compose创建,正在本地主机端口3000上侦听。 当我尝试时: 我能看到回应。 我所做的: 从我的域提供商处,我编辑了DNS以指向我的服务器,然后我更改了nginx入口: 我创建了服务: 但无论是否有服务,我都会收到错误信息,即503服务暂时不可用。 如何使用nginx入口指向本地TCP服务?

  • 问题内容: 是否可以将JAX-RS Web服务重定向到另一个网页? 就像您使用Servlet一样。 JAX-RS Web服务本身应该重定向。如果相关,我正在使用RESTEasy。 问题答案: 是的,如果您的返回类型是(或) https://eclipse- ee4j.github.io/jersey.github.io/apidocs/1.19.1 ,则可以在Jersey或任何JAX- RS实现(

  • 我在一个WordPress网站上使用一个服务人员,它把网站的重定向弄得一团糟https://example.com/page到https://example.com/page/. 第一次加载后,转到没有尾随斜杠的网址,眨眼浏览器会说“无法访问此网站”,火狐会说“损坏的内容错误”。 根据我对https://medium.com/@boopathi/service-workers-gotchas-44

  • 我遵循angular的官方指南,成功安装了初始服务人员。接下来,我想尝试一下更新行为,得到了一个 无法读取未定义的属性id 其中as id指ngsw-worker.js方法中的client.id 我做的步骤是 注册SW,离线并重新加载(工作),关闭标签,但保持窗口打开 app.cmp.html更新代码 重建项目(ng build--prod) 打开新的Tab和应用程序(可以观察SW更新) 重新加载

  • 网络通讯天然是不稳定的,因此在分布式系统中,需要有良好的容错设计。无差别重试是非常危险的。当通讯出现问题时,每个请求都重试一次,相当于系统 IO 负载增加了 100%,容易诱发雪崩事故。重试还要考虑错误的原因,如果是无法通过重试解决的问题,那么重试只是浪费资源而已。除此之外,如果重试的接口不具备幂等性,还可能造成数据不一致等问题。 本组件提供了丰富的重试机制,可以满足多种场景的重试需求。 安装 c

  • 我尝试使用RestTemplate进行新调用:例如: 这是可以的,但我需要重写控制器中的每个方法来使用RESTTemplate。此外,这会导致代理计算机上的冗余序列化/反序列化。 我尝试使用restemplate编写一个泛型函数,但没有成功: