首页 > 解决方案 > Zuul 反向代理第一次请求失败

问题描述

设置:

我正在使用 Zuul 反向代理向两个不同的后端服务发送请求。我不需要此应用程序的任何负载平衡。我只配置了一个过滤器,它不参与这个过程并且确认没有被调用。每个服务的 ZuullistOfServers在运行时使用来自服务器的以下代码动态填充:

clientFactory.getClientConfig(SERVICE_ID).set(CommonClientConfigKey.ListOfServers, "https://" + host + ":" + port);`

相关的application.yaml设置如下:

zuul:
  ignored-services: '*'
  add-proxy-headers: false
  sensitive-headers:

  # Use more descriptive name for the Zuul servlet bypass
  servlet-path: '/large-file-uploads'

  ribbon:
    eager-load:
      enabled: true

  routes:
    serviceone:
      path: /service_one/**
      serviceId: 'service_one'
    servicetwo:
      path: /service_two/**
      serviceId: 'service_two'

ribbon:
  eureka:
    enabled: false

问题:

listOfServers 应该设置之后(通过上面的代码),对服务的第一个请求会返回状态 500,并且服务器会打印 Zuul 转发错误(可以在此处找到)。任何后续调用都会按预期进行。此外,它似乎只有在后端服务重新启动后才会发生,尽管这不是服务的问题(通过 Postman 测试确认)。

任何帮助将不胜感激。谢谢!

标签: spring-cloudnetflix-zuulnetflix-ribbon

解决方案


原来是读取超时问题,请看 ryanjbaxter 的回答:https ://github.com/spring-cloud/spring-cloud-netflix/issues/3021


推荐阅读