spring cloud gateway 使用

首先要?jiǎng)?chuàng)建一個(gè)新的springboot的項(xiàng)目猿挚,作為gateway的項(xiàng)目

1.引入pom.xml中的依賴( SpringCloud gateway基于webflux實(shí)現(xiàn)的乌奇,不是基于SpringBoot-web,所以應(yīng)該刪除spring-boot-starter-web依賴 )

? ? ? <parent>

? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? <artifactId>spring-boot-starter-parent</artifactId>

? ? ? ? <version>2.0.5.RELEASE</version>

? ? ? ? <relativePath/> <!-- lookup parent from repository -->

? ? </parent>

? ? <dependencies>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.cloud</groupId>

? ? ? ? ? ? <artifactId>spring-cloud-starter-gateway</artifactId>

? ? ? ? ? ? <version>2.0.0.RELEASE</version>

? ? ? ? </dependency>

? ? ? ? <!-- nacos整合服務(wù)注冊與發(fā)現(xiàn)-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.cloud</groupId>

? ? ? ? ? ? <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

? ? ? ? ? ? <version>0.2.2.RELEASE</version>

? ? ? ? </dependency>

? ? </dependencies>

2.配置application.yml

server:

? port: 80

####服務(wù)網(wǎng)關(guān)名稱

spring:

? application:

? ? name: pitch-gateway

? cloud:

? ? gateway:

? ? ?####解決跨域的問題

? ? ? globalcors:

? ? ? ? ? corsConfigurations:

? ? ? ? ? ? '[/**]':

? ? ? ? ? ? ? ? allowedHeaders:"*"

? ? ? ? ? ? ? ? allowedOrigins: "http://www.xinyues.com"? ? ? ? ? ?

? ? ? ? ? ? ? ? allowedMethods:

? ? ? ? ? ? ? ? ?- GET

#超時(shí)設(shè)置

? ? ? httpclient:

? ? ? ? ?connect-timeout: 5000? ?#毫秒

? ? ? ? ?response-timeout: 5s

? ? ? discovery:

? ? ? ? locator:

? ? ? ? ? ####允許從注冊中心獲取地址

? ? ? ? ? enabled: true

? ? ? routes:

? ? ? ? ###路由id? 自定義唯一,這個(gè)沒有什么保證唯一就行了

? ? ? ? - id: pitch

? ? ? ? ? ####pitch-member為會員服務(wù)的名稱轰驳,這個(gè)可以用lb這個(gè)后面跟微服務(wù)的名稱會用到負(fù)載均衡厚掷,如果用http? ? ? ? ? ?####不會進(jìn)行負(fù)責(zé)均衡

? ? ? ? ? uri: lb://pitch-member/

####這個(gè)是gateway提供的一些過濾器

? ? ? ? ?filters:

? ? ? ? ? ? - StripPrefix=1

? ? ? ? ? ###路由匹配規(guī)則 表示當(dāng)客戶端訪問http://ip:80/member/**地址時(shí), gateway就會轉(zhuǎn)發(fā)到pitch-member會員服務(wù)的具體地址

? ? ? ? ? predicates:

? ? ? ? ? ? - Path=/member/**

? ? nacos:

? ? ? discovery:

? ? ? ? ###將網(wǎng)關(guān)服務(wù)注冊到nacos

? ? ? ? server-addr: 127.0.0.1:8848

? ? ? ? enabled: true

3.就是根據(jù)業(yè)務(wù)進(jìn)行一些自定義的過濾規(guī)則了弟灼,自定義過濾規(guī)則的時(shí)候要實(shí)現(xiàn)globalfilter,有選擇的實(shí)現(xiàn)ordered

例子:

①實(shí)現(xiàn)權(quán)限管理冒黑,日志管理 參考

https://blog.csdn.net/autfish/article/details/90637957?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

使用全局過濾器解決跨域問題

import org.springframework.cloud.gateway.filter.GatewayFilterChain;

import org.springframework.cloud.gateway.filter.GlobalFilter;

import org.springframework.http.HttpHeaders;

import org.springframework.http.server.reactive.ServerHttpRequest;

import org.springframework.http.server.reactive.ServerHttpResponse;

import org.springframework.stereotype.Component;

import org.springframework.web.server.ServerWebExchange;

import reactor.core.publisher.Mono;

@Component

public class CrossOriginFilter implements GlobalFilter {

? ? @Override

? ? public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

? ? ? ? // 允許跨域請求

? ? ? ? ServerHttpRequest request = exchange.getRequest();

? ? ? ? ServerHttpResponse response = exchange.getResponse();

? ? ? ? HttpHeaders headers = response.getHeaders();

? ? ? ?//在生產(chǎn)環(huán)境上最好指定域名田绑,以免產(chǎn)生跨域安全問題

? ? ? ? headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");

? ? ? ? headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "POST, GET, PUT, OPTIONS, DELETE, PATCH");

? ? ? ? headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");

? ? ? ? headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "*");

? ? ? ? headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");

? ? ? ? return chain.filter(exchange);

? ? }

}

gateway 的配置可以在數(shù)據(jù)庫中進(jìn)行配置,可參考https://blog.csdn.net/xiaobo5264063/article/details/105205974

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抡爹,一起剝皮案震驚了整個(gè)濱河市掩驱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冬竟,老刑警劉巖欧穴,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泵殴,居然都是意外死亡涮帘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門笑诅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來调缨,“玉大人,你說我怎么就攤上這事苟鸯⊥撸” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵早处,是天一觀的道長湾蔓。 經(jīng)常有香客問我,道長砌梆,這世上最難降的妖魔是什么默责? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮咸包,結(jié)果婚禮上桃序,老公的妹妹穿的比我還像新娘。我一直安慰自己烂瘫,他們只是感情好媒熊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坟比,像睡著了一般芦鳍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葛账,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天柠衅,我揣著相機(jī)與錄音,去河邊找鬼籍琳。 笑死菲宴,一個(gè)胖子當(dāng)著我的面吹牛贷祈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喝峦,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼势誊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了愈犹?” 一聲冷哼從身側(cè)響起键科,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤闻丑,失蹤者是張志新(化名)和其女友劉穎漩怎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗦嗡,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勋锤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侥祭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叁执。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖矮冬,靈堂內(nèi)的尸體忽然破棺而出谈宛,到底是詐尸還是另有隱情,我是刑警寧澤胎署,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布吆录,位于F島的核電站,受9級特大地震影響琼牧,放射性物質(zhì)發(fā)生泄漏恢筝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一巨坊、第九天 我趴在偏房一處隱蔽的房頂上張望撬槽。 院中可真熱鬧,春花似錦趾撵、人聲如沸侄柔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暂题。三九已至,卻和暖如春妈候,著一層夾襖步出監(jiān)牢的瞬間敢靡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工苦银, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啸胧,地道東北人赶站。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像纺念,于是被迫代替她去往敵國和親贝椿。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容