Client(요청) → Gateway → Eureka → 여러 개의 인스턴스(1ST-SERVICE)
즉,
게이트웨이는 사용자의 요청을 받아서
Eureka에 등록된 여러 개의 서비스(레플리카) 중 하나로 자동 분배(Load Balancing) 해주는 구조


spring:
cloud:
gateway:
routes:
routes: 요청을 어디로 라우팅할지 규칙을 나열id 블록이 하나의 “라우팅 규칙(route)”을 의미1ST-SERVICE 라우트
- id: 1st-service-get
uri: lb://1ST-SERVICE
predicates:
- Path=/first-service/**
filters:
- RewritePath=/first-service/(?<segment>.*), /${segment}
- AddRequestHeader=first-request, first-request-header
- AddResponseHeader=first-response, first-response-header
| 설정 항목 | 설명 |
|---|---|
| id | 라우트 식별자 (로그나 모니터링용 이름) |
| uri | lb://1ST-SERVICE → Eureka에 등록된 “1ST-SERVICE” 이름을 가진 인스턴스로 로드밸런싱하여 전달 |
| predicates | 조건: 요청 경로가 /first-service/** 로 시작할 때만 이 라우트 적용 |
| filters | 요청/응답을 조작하는 필터 설정 |
| 필터 | 역할 |
|---|---|
RewritePath=/first-service/(?<segment>.*), /${segment} |
접두어(/first-service)를 제거 → 백엔드가 /hello로 받을 수 있게 함 |
AddRequestHeader=first-request, first-request-header |
요청 헤더에 "first-request: first-request-header" 추가 |
AddResponseHeader=first-response, first-response-header |
응답 헤더에 "first-response: first-response-header" 추가 (디버깅용, 확인용) |
사용자 요청: <http://localhost:8000/first-service/hello>
↓
Gateway가 조건(Path=/first-service/**) 매칭
↓
/first-service 접두어 제거 → /hello 로 변경
↓
Eureka에서 등록된 1ST-SERVICE 인스턴스 중 하나로 전달
↓
응답 헤더에 “first-response-header” 추가 후 반환