spring:
cloud:
gateway:
routes:
- id: google
uri: http://google.com
predicates:
- Path=/google/{param}
filters:
- RewritePath=/google(?<segment>/?.*),/search
- AddRequestParameter=q,{param}
- id: naver
uri: http://search.naver.com
predicates:
- Path=/naver/{param}
filters:
- name: RewritePath
args:
regexp: /naver(?<segment>/?.*)
replacement: /search.naver
- name: AddRequestParameter
args:
name: query
value: '{param}'
-
설정 후 서버를 재 실행 후 브라우저를 열고 아래와 같은 url 을 입력하여 봅니다.
-
mvn spring-boot:run
- 서버를 실행 합니다. 8080 포트로 서버가 실행됩니다.
-
http://localhost:8080/google/검색어
- ‘검색어’ 라는 명칭을 구글에서 검색합니다.
-
http://localhost:8080/naver/검색어
- ‘검색어’ 라는 명칭을 네이버에서 검색합니다.
-
구글에서 검색을 하는 url 은 https://www.google.com/search?q= 형식입니다. 해당 도메인으로 라우팅을 시키고, 여러 검색엔진을 사용하기 위하여 filters 에서 path 를 다시 설정 하고, url path 를 파라미터로 받는 작업이 실행 되었습니다.
- 이번에는 실제 게이트웨이 예제에서 어떻게 쓰였는지 보겠습니다.
cloud:
gateway:
routes:
- id: product
uri: http://localhost:8085
predicates:
- Path=/product/**,,/products/**,/goods/**
- id: order
uri: http://localhost:8081
predicates:
- Path=/orders/**
- id: delivery
uri: http://localhost:8082
predicates:
- Path=/deliveries/**
- id: servicecenter
uri: http://localhost:8084
predicates:
- Path=/surveys/**
- id: mypage
uri: http://localhost:8086
predicates:
- Path=/users/**,/mypage/**
- id: oauth
uri: http://localhost:8090
predicates:
- Path=/oauth/**
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins:
- '*'
allowedMethods:
- '*'
allowedHeaders:
- '*'
allowCredentials: true
- 위의 샘플은 로컬 환경에서 다양한 서비스를 라우팅 한 결과 입니다.
- 하나의 서비스에는 path 가 여러개 있을 수 있습니다. 그때 ,(콤마) 로 각 path 들을 설정하여 줍니다.
- path 가 1개만 있지 않기 때문에 path 뒤에 /** 을 사용하여 해당 path 뒤쪽에 오는 모든 url 을 받겠다고 선언 하였습니다.
- globalcors 라는 설정으로 cors 처리를 할 수 있습니다.
실습 리뷰
간단하게 라우팅과 필터에 대하여 spring-cloud-gateway 를 사용하여 설정하여 보았습니다.
게이트웨이는 마이크로 서비스 아키텍처 패턴에서 외부와 내부를 연결하는 중요한 역할을 담당합니다.
게이트 웨이는 라우팅이 기본이지만, 인증/인가 처리나 Rate Limiting 등의 처리등이 가능합니다.
좀더 다양한 기능은 아래 링크를 통하여 좀더 살펴 보실 수 있습니다.
https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/