SpringCloud网关配置

280 阅读2分钟

springcloud 网关的配置

1.为什么要用网关?它解决了什么问题?

作用:当我们的微服务越来越多的时候,这时候网关就起到了统筹全局的作用,可以指挥所有的微服务。

直接的表单:多个微服务的访问入口是不一样的,网关可以进行同意配置相同的访问端口

解决的问题: 1.统一入口:为全部微服务提供唯一入口点,网关起到外部和内部隔离,保障了后台服务的安全性。 2.鉴权校验:识别每个请求的权限,拒绝不符合要求的请求。 3.动态路由:动态的将请求路由到不同的后端集群中。 4.减少客户端与服务的耦合,服务可以独立发展,通过网关层来做映射。

2.springcloud 网关的配置

网关也是一个微服务,所以首先我们需要创建一个maven-springboot 项目

1.下载需要用到的依赖

	<parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.3.5.RELEASE</version>
    </parent>
    <dependencyManagement>
        <dependencies>
            <!--springCloudAlibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.8.RELEASE</version>
                <!--引入一个父项目-->
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springCloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
<!--        网关依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
<!--        注册中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

2.创建一个启动类(注册中心)

  • 这里需要配置nacos注册中心,如果不知道怎么配置,可以取参考百度,到时候也会进行整理总结
package com.zking;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class GatewayStart {
    public static void main(String[] args) {
        SpringApplication.run(GatewayStart.class);
    }
}

3.进行网关配置(核心)application.xml

server:
  port: 9999
spring:
  application:
    name: shop-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      routes:
        - id: shop-user # id在网关路由中是唯一 可以任意命名
          uri: lb://shop-user # lb负载均衡
          predicates: # 谓词工厂,满足条件即可访问
            - Path=/user/** # 符合该路径 就可以进入用户服务
#            - After=2023-04-24T10:00:00.000+08:00[Asia/Shanghai] # 在这个时间之后可以访问
#            - Cookie=uname,qiangge # 请求必须携带指定cookie(请求头)
          filters:
            - StripPrefix=1 # 去掉一层路径

4.核心配置的解释说明与实机演示

启动对应的微服务即可访问

1、设置端口、nacos注册中心都不说了

2、gateway routes -id

这里一半配置的是与项目名相同

3、uri:uri: lb://shop-user

lb负载均衡

4、predicates:

谓词工厂,满足条件即可访问

  1. -Path=/user/ ** 只有user下面的路径才能进行访问

  2. -After= 2023-04-24T10:00:00.000+08:00[Asia/Shanghai] 只有在这个设定时间之后才能进行访问,(不太好演示,在这个时间之后是访问不了页面的)

  3. - Cookie=uname,qiangge 请求必须携带指定cookie(请求头) 网关的配置.png

5.多个微服务的网关配置,添加多个id即可

多个微服务配置.png

3.更多springcloud网关配置可以查看一下官网

春云网关 (spring.io)