SpringCloud基础配置与一些注意事项(七)Gateway网关

Gateway按照官方来说是要比Zuul强的有点多的;
但是配置的坑比较多,很多官方的原配置 抄下来 也没有效果,毕竟不咋理得清,只能抄,抄不懂,就没得搞
Gateway就直接上完全的配置了:
引入依赖

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

配置文件,同样的启动类需要添加@EnableDiscoveryClient注解,注册到eureka中

server:
  port: 8100
spring:
  application:
    name: gateway-server
  cloud:
    gateway:
      globalcors:
        corsConfigurations:
          '[/**]':
            allowedOrigins:
            # 跨越规则,指定了下方可以跨域的浏览地址之后,该浏览地址通过ajax访问gateway,此处是8100,然后gateway在通过映射找到需要访问的服务
            - "*" # 不支持通配符方式,但是支持一个整的*号
            allowedMethods:
            - GET
      routes:
        # 路由id 可以随便写,但是需要见名知意
        - id: user-service
          # 映射的地址 此处是uri  不是url  请注意!!!
          # uri: http://127.0.0.1:8081
          uri: lb://user-service # 代理的服务地址,代表该uri将会由loadBalance负责负载均衡策略
          # 根据下面的断言  映射到上方的地址  如果匹配/user/**即可映射到http://127.0.0.1:8081/user/**
          predicates:
            # 匹配 /user/**
            # - Path=/user/**
            - Path=/user/**
          # 局部过滤器 ,配置在配置文件中,对访问地址端口后面的前缀做处理
          filters:
            # 添加请求路径的前缀 前缀路径 访问localhost:8100/8 --> localhost:8081/user/8
            - PrefixPath=/user
            # 去除前缀个数 1代表去除端口后一个前缀,2代表去除2个    访问localhost:8100/app/user/8 --> localhost:8081/user/8
            - StripPrefix=1 # 先添加/user 再删除/user 还是原来的,代表过滤器链可以成功执行
            - MyParam=name  # 笔者自己写的继承@AbstractGatewayFilterFactory抽象类的局部过滤器MyParamGatewayFilterFacotry  默认规则 这里就是MyParam ,奇奇怪怪(springcloud 能被吐槽的点是真的多)
      # 局部过滤器 配置在default-filters下,效果等同于 全局过滤器,但是真正意义上的全局过滤器不需要配置,并且实现的接口是 GlobalFilter
      # 而配置在spring.cloud.gateway.routes.- id.routes下和spring.cloud.gateway.default-filters下的过滤器都是实现GatewayFilterFactory接口,严格意义上都称为局部过滤器
        - id: consumer-service
          uri: lb://consumer-service
          predicates:
            - Path=/consumer/**
      default-filters:
        # springcloud内置的过滤器,还有一个AddRequestParameters 不知道怎么设置参数
        - AddRequestHeader=tokenReq,rinilaoniang # 在过滤器中往请求头中添加一个请求头 tokenReq
        - AddResponseHeader=token111,rinixianrenbanban # 在过滤器中往响应对象中添加一个响应头 token
        - AddRequestParameter=foo,bar #添加请求参数
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10001/eureka
  # 设置ip优先
  instance:
    prefer-ip-address: true
# gateway 内置的ribbon 和feign内置的ribbon一样的配置
#ribbon:
#  ReadTimeout: 2000 # 读取超时时长 作用在服务提供端的,如果提供端2秒内未给出响应,视为超时 ,也没有见到效果
#  ConnectTimeout: 1000 # 建立链接的超时时长
#  MaxAutoRetries: 0 # 当前服务器的重试次数
#  MaxAutoRetriesNextServer: 0 # 重试多少次服务
#  OkToRetryOnAllOperations: false # 是否对所有的请求方式都重试
#gateway内置的hystrix 默认熔断超时时长是1秒   不生效的 假的; 官网提供的也无效,应该需要实现Hystrix的接口
#hystrix:
#  command:
#    default:
#      excution:
#        isolation:
#          thread:
            # 没生效,即使线程睡5秒也没有见到效果
#            timeoutInMilliseconds: 1000

需要标注的重点 都在注释中;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值