微服务项目:尚融宝(33)(服务调用(3))

2022-11-15 14:43:39 浏览数 (1)

微服务网关

一、创建模块service-gateway

1、创建模块

在srb下创建普通maven模块

Artifact:service-gateway

2、配置pom

在api-gateway的pom中添加如下依赖

代码语言:javascript复制
<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>

3、配置application.yml

代码语言:javascript复制
server:
  port: 80 # 服务端口

spring:
  profiles:
    active: dev # 环境设置
  application:
    name: service-gateway # 服务名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
    gateway:
      discovery:
        locator:
          enabled: true # gateway可以发现nacos中的微服务,并自动生成转发路由

4、logback.xml

修改日志输出目录名为 gateway

5、创建启动类

代码语言:javascript复制
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceGatewayApplication.class, args);
    }
}

6、启动网关

注意:因为nginx和网关同时使用了80端口,因此先停止nginx,然后再启动网关

nginx.exe -s stop

二、路由配置

1、基本配置

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

代码语言:javascript复制
#spring:
# cloud:
#   gateway:
      routes:
      - id: service-core
        uri: lb://service-core
        predicates:
        - Path=/*/core/**
      - id: service-sms
        uri: lb://service-sms
        predicates:
        - Path=/*/sms/**
      - id: service-oss
        uri: lb://service-oss
        predicates:
        - Path=/*/oss/**

三、跨域配置

1、配置文件

在 api-gateway中添加跨域配置

代码语言:javascript复制
@Configuration
public class CorsConfig {
    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true); //是否允许携带cookie
        config.addAllowedOrigin("*"); //可接受的域,是一个具体域名或者*(代表任意域名)
        config.addAllowedHeader("*"); //允许携带的头
        config.addAllowedMethod("*"); //允许访问的方式

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);

        return new CorsWebFilter(source);
    }
}

2、删除后端跨域配置

删除微服务中的跨域注解 @CrossOrigin

今日bug

failed to req API:localhost:8848/nacos/v1/ns/instance. code:500 msg: java.net.ConnectException

解决 1、检查nacos有没有开启 2、检查nacos开启是否正常 3、nacos和eureka不一样,eureka是项目的一部分,nacos更像是合作伙伴的关系,新手容易忽略

如果nacos正常开启了,重新启动项目,还是不行 (1)检查注解@EnableDiscoveryClient (2)检查配置文件

0 人点赞