스프링 클라우드 게이트 공식 문서에 따르면 필터 체인의 마지막에 Proxy Filter가 있고 해당 필터에서 프록시를 진행한다고 설명합니다. 이번 글에서는 스프링 클라우드 게이트웨이가 어떻게 프록시 필터를 구성하고 프록시를 진행하는지 알아보겠습니다.
스프링 클라우드 게이트웨이의 실제 Proxy 역할은 NettyRoutingFilter
와 NettyWriteResponseFilter
가 담당합니다.
org.springframework.cloud.gateway.filter.NettyRoutingFilter
HttpClient
를 이용해 요청을 전송org.springframework.cloud.gateway.filter.NettyWriteResponseFilter
스프링 클라우드 게이트웨이의 필터 체인에서 Proxy 동작 시점은 다음과 같습니다:
NettyRoutingFilter
:
<aside> 💡
Route 정보란?
Route 정보(Route)는 현재 요청(Request)을 어떤 백엔드 서비스(URI)로 라우팅(프록시)할지 결정하기 위한 정보 객체입니다.
org.springframework.cloud.gateway.route.Route
객체로 표현되며, 다음 정보를 포함합니다:
id
: 라우트 식별자uri
: 백엔드 서비스의 URI (ex: http://backend-service:8080
)order
: 라우트의 우선순위predicate
: 해당 라우트가 적용될 조건 (Path, Method, Header 등 조건들)filters
: 적용될 GatewayFilter 리스트metadata
: 라우트와 연결된 추가 메타데이터즉, “어떤 요청을 받았을 때 어떤 백엔드 URI로 전달하고, 어떤 필터 체인을 적용할지”의 결정된 결과입니다.
</aside>
NettyWriteResponseFilter
: