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

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

弘靖琪
2023-03-14

我使用的是spring boot微服务。我已经配置了eureka、zuul代理和另一个微服务(帐户)。如果我直接从账户上打电话,效果很好。帐户和zuul服务器都显示在eureka上。

当我尝试使用zuul代理命中它得到状态代码200OK但没有得到任何结果

下面是我对zuul的配置

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: '*'

控制台日志到目前为止

路由匹配=ZuulRoute{id='account',path='/account/**',serviceId='account',url='s'http://192.168.0.62:8081/'、stripPrefix=false、retryable=null、sensitiveHeaders=[]、customSensitiveHeaders=false、}--------------------映射到组织。springframework。云netflix。祖尔。网状物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个答案

商佑运
2023-03-14

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

eureka:
  client:
    registerWithEureka: true

您不需要向eureka注册zuul应用程序,因为您直接访问zuul gateway,没有任何服务会试图定位和访问您的网关。

然后呢

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

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

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

默认情况下,serviceId为:

spring:
  application:
    name: <YOUR_ACCOUNT_SERVICE_ID>

从这里查看我的答案

 类似资料:
  • 我有一个简单的spring引导的微服务(用户服务)和一个spring引导的网关服务(网关-服务器),使用Zuul设置到Eureka服务器(发现服务)注册。向用户-服务发送请求直接起作用,并且所有服务都成功地注册到eureka服务器。当我向网关服务器发送请求时,我会得到一个转发错误,原因是“com.netflix.client.clientException:Load balancer没有用于客户端

  • 我有一个小的Spring Boot API在docker中运行。下面显示的是我用来升级容器的命令。 然后,我有一个停靠的JMeter,我使用下面的命令来启动它 但是所有的测试都失败了,请求没有被发送到API。这就是JMeter的CLI的外观 请求的测试配置: 协议:htttp 服务器:localhost 端口:8080 方法:GET 路径:/api/factorial 完整的bash文件如下所示:

  • null 例如,将返回JSON格式的用户。 用户应用程序也有一个HTTPendpoint,它应该将请求转发给其他应用程序--让我们将其中一个称为作业应用程序。 此endpoint为。例如, 请注意,初始请求到达用户应用程序,然后它被转发到作业应用程序。 我把我思考的一些方法。也许你过去做过类似的事情,所以你可以分享你这样做的经验。甚至改进我的一种方法。 我将使用映射在用户应用程序中创建 null

  • 我只有很少的spring boot微服务,它们是通过云环境部署到JBoss的。这些引导服务是在Eureka服务器中注册自己的Eureka客户端。下面是一个例子: 它用user-regn-service-app Eureka主页的名称向Eureka注册应用程序 wildfly服务器在8080处运行,而user-regn-service-app部署在上下文路径/user-regn-service-ap

  • XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); 方法 描述 open(method,url,async) 规定请求的类型、URL 以及是否异步处理