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 를 파라미터로 받는 작업이 실행 되었습니다.

  1. 이번에는 실제 게이트웨이 예제에서 어떻게 쓰였는지 보겠습니다.
    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/

Copyright © uEngine All Rights Reserved | 주소 : 서울특별시 서초구 신반포로45길 18 502호(잠원동, 주일빌딩)
사업자등록번호 : 211-87-95355 | 전화번호 : 02-567-8301 | 대표이사 : 장진영
Copyright © uEngine All Rights Reserved
주소 : 서울특별시 서초구 신반포로45길 18 502호(잠원동, 주일빌딩)
사업자등록번호 : 211-87-95355
전화번호 : 02-567-8301
대표이사 : 장진영