搭建Gateway網(wǎng)關(guān)

1. 添加依賴


<dependencies>
    <!-- Gateway正經(jīng)依賴 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    
    <!-- Nacos服務(wù)發(fā)現(xiàn) -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>    
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>

</dependencies>

2. 配置文件

server:
  port: 30000
spring:
  application:
    name: gateway
  cloud:
    nacos:
      # Nacos配置項
      discovery:
        server-addr: localhost:8848
        heart-beat-interval: 5000
        heart-beat-timeout: 15000
        cluster-name: Cluster-A
        namespace: dev
        group: myGroup
        register-enabled: true
    gateway:
      discovery:
        locator:
          # 創(chuàng)建默認(rèn)路由,以"/服務(wù)名稱/接口地址"的格式規(guī)則進(jìn)行轉(zhuǎn)發(fā)
          # Nacos服務(wù)名稱本來就是小寫,但Eureka默認(rèn)大寫
          enabled: true
          lower-case-service-id: true
      # 跨域配置
      globalcors:
        cors-configurations:
          '[/**]':
            # 授信地址列表
            allowed-origins:
              - "http://localhost:8808"
            # cookie, authorization認(rèn)證信息
            expose-headers: "*"
            allowed-methods: "*"
            allow-credentials: true
            allowed-headers: "*"
            # 瀏覽器緩存時間
            max-age: 1000          

此處注意跨域配置中的幾個參數(shù)的含義。

參數(shù) 含義
allowed-origins 可以被信任的來源地址list
expose-headers Response Hearder 中可以被暴露的Header
allowed-methods 支持跨域的Http Method
allowed-credentials 跨域請求默認(rèn)不帶cookie
allowed-headers 允許接收的Request Header 屬性

3. 定義路由規(guī)則

聲明路由有三種方式,分別是JAVA代碼、配置文件、和動態(tài)路由,此處使用JAVA代碼聲明


@Configuration
public class RoutesConfiguration {

    @Bean
    public RouteLocator declare(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(route -> route
                        .path("/gateway/manage/**")
                      // stripPrefix 過濾器,將 path 訪問路徑中的第一個前置子路徑刪除掉
                        .filters(f -> f.stripPrefix(1))
                      // lb會負(fù)載均衡,后面是在nacos注冊的服務(wù)名稱
                        .uri("lb://manage-serv")
                )
            ).build();
    }
}

添加一個項目啟動的類,啟動之后,就可以作為一個網(wǎng)關(guān)了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容