Zuul 不转发请求到其他微服务

Posted

技术标签:

【中文标题】Zuul 不转发请求到其他微服务【英文标题】:Zuul not forwarding requests to other micro-services 【发布时间】:2019-04-05 05:30:27 【问题描述】:

我正在使用 Spring Boot 微服务。我已经配置了 eureka、zuul 代理和另一个微服务(帐户)。如果我直接从帐户调用它工作正常。帐户和 zuul 服务器都显示在 eureka 上。

当我尝试使用 zuul 代理点击时,它正在获取状态码 200OK 但没有得到任何结果

下面是我对zuul的配置

Zuul.yml

server:
  port: 8076
eureka:
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://localhost:8078/eureka/
  instance:
    hostname: localhost
    health-check-url-path: /actuator/health
    status-page-url-path: /actuator/info
logging:
  level:
    com.netflix.discovery: 'ON'
    org.springframework.cloud: DEBUG
zuul:
  ignoredServices: '*'
  routes:
    account:
      serviceId: ACCOUNT
      url: http://192.168.0.62:8081/
      stripPrefix: false
      predicate:
      - Path=/accounts/**
  debug:
    requests: true
management:
  security:
    enabled: false
  endpoints:
    web:
      exposure:
        include: '*'

到目前为止的控制台日志

路由匹配=ZuulRouteid='account', path='/account/**', serviceId='账户', url='http://192.168.0.62:8081/', stripPrefix=false,retryable=null,sensitiveHeaders=[], customSensitiveHeaders=假, --------------------------- 映射到 org.springframework.cloud.netflix.zuul.web.ZuulController@7bb67520

执行器/环境日志

"zuul.ignoredServices": 
"value": "*"
,
"zuul.routes.account.serviceId": 
"value": "ACCOUNT"
,
"zuul.routes.account.url": 
"value": "http://192.168.0.62:8081/"
,
"zuul.routes.account.stripPrefix": 
"value": false
,
"zuul.routes.account.predicate[0]": 
"value": "Path=/accounts/**"
,
"zuul.debug.requests": 
"value": true
,
"management.security.enabled": 
"value": false
,
"management.endpoints.web.exposure.include": 
"value": "*"

如果缺少某些东西,我无法从这里得到任何东西,请检查并告诉我。任何帮助都会很有用

谢谢。

如果需要更多信息,请告诉我。

【问题讨论】:

【参考方案1】:

如我所见,您设置了 Eureka,但没有正确使用它。首先在 zuul yaml 你有

eureka:
  client:
    registerWithEureka: true

你不需要向eureka注册你的zuul应用,因为你是直接访问zuul网关,没有任何服务会尝试定位并到达你的网关。

然后

account:
  serviceId: ACCOUNT
  url: http://192.168.0.62:8081/
  stripPrefix: false
  predicate:
  - Path=/accounts/**

如果您有不需要url 属性和predicate: - Path 的服务发现,请尝试:

account:
  serviceId: <YOUR_ACCOUNT_SERVICE_ID>
  stripPrefix: false
  path: /account/**

默认 serviceId 为:

spring:
  application:
    name: <YOUR_ACCOUNT_SERVICE_ID>

从here查看我的回答

【讨论】:

以上是关于Zuul 不转发请求到其他微服务的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud微服务(05):Zuul组件,实现路由网关控制

SpringCloud微服务(05):Zuul组件,实现路由网关控制

zuul路由网关

springcloud+zuul+swagger2之微服务通过网关进行分发

SpringCloud之zuul网关

SpringCloud - Zuul路由网关