- 需要在pom文件中配置nacos的服务配置config和服务发现discovery的依赖
- 需要同步springboot和springcloud的版本
- 启动类上加上@enablediscoveryclient注解,开启服务注册与发现
- gateway不需要添加mybatis依赖,如果添加了需要在启动类@springbootapplication注解上添加
@enablediscoveryclient
@springbootapplication(exclude = {datasourceautoconfiguration.class})
- 在application.properties文件中配置
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
- 在bootstrap.properties文件中配置
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
server.port=88
- 跨域
前端给后端发送ajax请求时,前后端服务地址不同会引起跨域,网关服务统一配置跨域后就不用在其他服务都配置跨域
@configuration
public class gulimallcorsconfiguration {
@bean
public corswebfilter corswebfilter(){
urlbasedcorsconfigurationsource source = new urlbasedcorsconfigurationsource();
//配置跨域
corsconfiguration corsconfiguration = new corsconfiguration();
corsconfiguration.addallowedheader("*");
corsconfiguration.addallowedmethod("*");
corsconfiguration.setallowcredentials(true);
corsconfiguration.addallowedorigin("*");
//允许所有请求跨域
source.registercorsconfiguration("/**",corsconfiguration);
return new corswebfilter(source);
}
}
- 添加网关路由配置
spring:
cloud:
gateway:
router:
- id: baidu_routes
uri: https://www.baidu.com
predicates:
- query=url,baidu
- id: qq_routes
uri: https://www.qq.com
predicates:
- query=url,qq
- id: product_route
uri: lb://gulimall-product
predicates:
- path=/product/**
filters:
- rewritepath=/(?<segment>.*),/$\{segment}
- id: third_party_route
uri: lb://gulimall-third-party
predicates:
- path=/thirdparty/**
filters:
- rewritepath=/thirdparty/(?<segment>.*),/$\{segment}
- id: admin_route
uri: lb://renren-fast
predicates:
- path=/**
filters:
- rewritepath=/(?<segment>.*),/renren-fast/$\{segment}
path=/product/**--------------------------- 路径为/product开头的任意路径
rewritepath=/(?.*),/${segment}---------------- 就按照 / -> /的规则
## 路由由上至下 优先级高的放前面(/product/**就应该放在/**的上面)
## lb://renren-fast 负载均衡到哪个服务 lb://服务名
## predicates断言规则, path按照指定的路径断言 前端项目断言规则 path=/api/**
## rewritepath路径重写规则: 把 http://localhost:88/captcha.jpg 转换为 http://localhost:8080/renren-fast/captcha.jpg
## /(?<segment>.*) 左边这部分是网页访问的url,/$\{segment} 右边这部分是真正的后台接口的url ,规则就是 左边->右边
## localhost:30000/thirdparty/oss/policy -> localhost:30000/oss/policy
发表评论