1.创建数据库---- 自带

2.指定使用mysql作为数据存储application.properties

3.配置集群文件


4.停止nacosbing 复制三分
并修改其中端口号跟名字一一对应

5.启动nacos默认以集群的模式开启


nginx修改

微服务注册到nacos集群上 nginx 代理nacos地址为localhost:81
建立模块gateway
导入依赖
<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>
yml文件配置
server:
port: 7000
spring:
application:
name: springcloud-gateway
????
cloud:
gateway:
routes:
- id: springcloud-product
# ????????? lb://eureka-product?????
uri: lb://eureka-product
# predicates:???????????????uri? ??
predicates:
- Path=/product/**
- Method=Post
??????ip/24???255.255.255???
- RemoteAddr=162.168.1.130
- id: springcloud-order
# ?????????
uri: lb://springcloud-order
# predicates:???????????????uri? ??
predicates:
- Path=/order/**
#????gateway??????
cloud:
gateway:
discovery:
locator:
enabled: true
#?????????
nacos:
server-addr: localhost:81
anon:
url:
- /sso/login
- /product/getMsg
Anon
@Component
@ConfigurationProperties(prefix = "anon")
public class Anon {
private List<String> url;
public List<String> getUrl() {
return url;
}
public void setUrl(List<String> url) {
this.url = url;
}
}
LoginFilter
@Component
public class LoginFilter implements GlobalFilter, Ordered {
@Autowired
private Anon anon;
@Override
//过滤方法 过滤业务
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
//0.获去请求
String path = request.getPath().toString();
//1.判断房前路径是否为放行路径
if(anon.getUrl().contains(path)){
return chain.filter(exchange);//放行
}
//2.判断是否携带token
String token = request.getHeaders().getFirst("token");
if(StringUtils.hasText(token)&&"admin".equals(token)){
return chain.filter(exchange);//放行
}
//3.返回一个json数据。
//3.1设置状态码
response.setStatusCode(HttpStatus.UNAUTHORIZED);
//3.2封装返回数据
Map<String, Object> map = new HashMap<>();
map.put("msg", "未登录");
map.put("code", 4000);
//3.3作JSON转换
byte[] bytes = JSON.toJSONString(map).getBytes(StandardCharsets.UTF_8 );
//3.4调用bufferFactory方法,生成DataBuffer对象
DataBuffer buffer = response.bufferFactory().wrap(bytes);
//4.调用Mono中的just方法,返回要写给前端的JSON数据
return response.writeWith(Mono.just(buffer));
}
@Override
//优先级 返回的值越小优先级越高
public int getOrder() {
return 0;
}
}
本文介绍了如何配置Gateway网关,包括创建数据库、设定MySQL存储、配置集群文件、启动Nacos集群模式,以及微服务注册到Nacos集群,并通过Nginx进行代理设置。
860

被折叠的 条评论
为什么被折叠?



