zoukankan      html  css  js  c++  java
  • 微服务网关3-配置路由和跨域

    一、基本配置

    1、路由和断言

    在application.yml文件中添加路由配置

    • -:表示数组元素,可以配置多个节点
    • id:配置的唯一标识,可以和微服务同名,也可以起别的名字,区别于其他 Route。
    • uri:路由指向的目的地 uri,即客户端请求最终被转发到的微服务。
    • predicates:断言的作用是进行条件判断,只有断言都返回真,才会真正的执行路由。
    • Path:路径形式的断言。当匹配这个路径时,断言条件成立
    • /**:一个或多个层次的路径
    #spring:
      cloud:
        gateway:
          routes:
          - id: service-edu
            uri: http://localhost:8110
            predicates:
            - Path=/user/**
    

    2、测试网关路由转发

    访问:http://localhost:9110/user/info
    请求转发到:http://localhost:8110/user/info

    二、注册到nacos注册中心

    1、网关中添加依赖

    <!--服务注册-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    

    2、主类添加注解

    @EnableDiscoveryClient
    

    3、添加nacos配置

    #spring:
    
    #  cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 # nacos服务地址
    

    4、添加gateway配置

    #spring:
    
    #  cloud:
    #    gateway:
          discovery:
            locator:
              enabled: true # gateway可以发现nacos中的微服务
    

    5、修改uri配置

    将uri的地址修改成注册中心中的微服务地址,网关姜葱nacos中按照名称获取微服务

    uri: lb://service-edu   #lb:表示在集群环境下通过负载均衡的方式调用
    

    6、测试

    访问:http://localhost:9110/user/info

    7、匹配多个path

    - Path=/user/**, /*/edu/**
    

    三、跨域配置

    1、前端配置

    修改guli-admin中 config/dev.env.js,BASE_API指定到网关地址

      BASE_API: '"http://127.0.0.1:9110"',
    

    2、删除后端跨域配置

    此时可以删除微服务中的跨域注解 @CrossOrigin
    例如 service_edu中 LoginController的跨域注解

    3、跨域配置

    package com.atguigu.guli.infrastructure.apigateway.config;
    
    @Configuration
    public class CorsConfig {
        @Bean
        public CorsWebFilter corsFilter() {
            CorsConfiguration config = new CorsConfiguration();
            config.addAllowedMethod("*");
            config.addAllowedOrigin("*");
            config.addAllowedHeader("*");
    
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
            source.registerCorsConfiguration("/**", config);
        
            return new CorsWebFilter(source);
        }
    }
    

    注意:去掉后端的所有跨域配置

    四、完整的路由配置

    1、yml配置

    routes:
    
    - id: service-edu
      uri: lb://service-edu
      predicates:
      
      - Path=/user/**, /*/edu/**
    - id: service-cms
      uri: lb://service-cms
      predicates:
      
      - Path=/*/cms/**
    - id: service-oss
      uri: lb://service-oss
      predicates:
      
      - Path=/*/oss/**
    - id: service-sms
      uri: lb://service-sms
      predicates:
      
      - Path=/*/sms/**
    - id: service-trade
      uri: lb://service-trade
      predicates:
      
      - Path=/*/trade/**
    - id: service-ucenter
      uri: lb://service-ucenter
      predicates:
      
      - Path=/*/ucenter/**
    - id: service-vod
      uri: lb://service-vod
      predicates:
      - Path=/*/vod/**  
    

    2、前端配置

    (1)修改guli-site中 utils/request.js,BASE_API指定到网关地址

    baseURL: 'http://127.0.0.1:9110',
    

    (2)所有的api模块中的baseURL可以删除
    (3)guli-admin上传相关表单中action地址的修改

    data中定义:

    BASE_API: process.env.BASE_API
    

    html中使用:

    :action="BASE_API+'/admin/oss/file/upload?module=avatar'"
    
  • 相关阅读:
    HAProxy、Keepalived 在 Ocatvia 的应用实现与分析
    Octavia 的 HTTPS 与自建、签发 CA 证书
    Octavia 创建 loadbalancer 的实现与分析
    OpenStack Rally 质量评估与自动化测试利器
    自建 CA 中心并签发 CA 证书
    Failed building wheel for netifaces
    通过 vSphere WS API 获取 vCenter Datastore Provisioned Space 置备空间
    OpenStack Placement Project
    我们建了一个 Golang 硬核技术交流群(内含视频福利)
    没有图形界面的软件有什么用?
  • 原文地址:https://www.cnblogs.com/smalldong/p/13911221.html
Copyright © 2011-2022 走看看