Zuul网关配置、ZuulException: Forwarding error

版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/84645985
声明,使用JDK8、springcloud2.01 、maven3.5.4、idea

Zuul 是什么,有什么作用:
核心作用就是过滤和路由;

1、基本配置如下:
1.1、添加Zuul 以及Eureka 依赖;
        <!-- 网关依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <!-- eureka  -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
1.2、yml 文件、Zuul 路由规则配置:

由于存在Eureka 客户端,所以直接指定服务端的名字即可;
后面还有更简化的配置;

server:
  port: 10010  #端口
spring:
  application:
    name: api-gateway  # 网关名字
zuul:
  routes:
    user-service:     # 路由的 id
      path: /user-service/**  #映射路径
   #  url: http://127.0.0.1:8081   #映射路径对应的实际的url地址
    #  访问路径规则 添加 映射路径的规则
      serviceId: user-service  # 指定服务端的名称

简化配置:直接指定服务端的 ID 指向 映射路径 path

zuul.routes..path=/xxx/**: 来指定映射路径。是自定义的路由名
zuul.routes..serviceId=/user-service:来指定服务名。
简化配置:
zuul.routes.= 即简化成如下配置:

zuul:
  routes:
    user-service: /user-service/** # 这里是映射路径

默认配置: Zuul 默认配置规则就是服务path 对应就是服务ID ,意思就是不配置Zuul 也是OK的。

忽略配置:
想要禁用某一个路由规则 采用如下配置:

zuul:
  ignored-services:
    - user-service
    - consumer
1.3、配置好Zuul ,

访问代理 http://localhost:10010/user-service/user/2
出现500报错,报错如下:

com.netflix.zuul.exception.ZuulException: Forwarding error
、、省略
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: path

异常原因如下图:
在这里插入图片描述
明显路径映射不对,仔细查看发现yml 文件中path 、url 和user-service 在同一级路径了,都是坑;
修改如下图,恢复正常访问;
1


1、添加前缀: /api
使用 zuul.prefix : /api 的语法,yml具体配置如下:
访问:http://localhost:10010/api/user-service/user/2

zuul:
  prefix: /api   # 添加路由前缀
  routes:
    user-service:     # 路由的 id
      path: /user-service/**  #映射路径
   #  url: http://127.0.0.1:8081   #映射路径对应的实际的url地址
    #  访问路径规则 添加 映射路径的规则
      serviceId: user-service  # 指定服务端的名称

在这里插入图片描述
访问结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42323802/article/details/84645985