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:
谓词工厂,满足条件即可访问
-
-Path=/user/ ** 只有user下面的路径才能进行访问 -
-After= 2023-04-24T10:00:00.000+08:00[Asia/Shanghai] 只有在这个设定时间之后才能进行访问,(不太好演示,在这个时间之后是访问不了页面的) -
-Cookie=uname,qiangge 请求必须携带指定cookie(请求头)
5.多个微服务的网关配置,添加多个id即可
