• 프로젝트 생성
• application.yaml 에서 프록스 설정
• Java 코드로 프록시 설정
프로젝트 생성
의존성
1. 롬복 – 코드 간소화 , slf4j 로깅 기능 사용
2. Devtools – 개발 편의성
3. SpringCloudGateway – 의존성
4. Eureka 서버를 발견할 수 있는 클라이언트
application.yaml 에서 프록스 설정
1. 8000번 포트로 게이트웨이를 설치
2. eureka
server:
port: 8000
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
- id : board-api-service
uri: http://localhost:8080/
predicates:
- Path=/board-api-service/**
filters:
- AddRequestHeader=board-api-service, board-api-service1
- AddResponseHeader=board-api-service, board-api-service2
- id: board-front-service
uri: http://localhost:9090/
predicates:
- Path=/board-front-service/**
filters:
- AddRequestHeader=board-front-service, board-front-service1
- AddResponseHeader=board-front-service, board-front-service2
Java 코드로 프록시 설정
@Configuration
public class FilterConfig {
// application.yml 에서 정할 설정을 코드로도 할 수 있다.
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
return builder.routes()
// 라우트 추가 인자값 r을 사용
// 라우트s 로 라우트리스트 route로 개별 등록, build()로 마무리
// 라우트 객체에 path정보를 등록, 어떤 동작을 할지 지정
// fillter 설정을 한 후 uri값으로 이동하겠다라는 뜻
// 헤더의 값은 key, value 값으로 정한다.
.route(r -> r.path("/board-api-service/**")
.filters(f -> f.addRequestHeader("board-api-service", "board-api-service-header")
.addResponseHeader("board-api-service", "board-api-service-header"))
.uri("http://localhost:8080/"))
.route(r -> r.path("/board-front-service/**")
.filters(f -> f.addRequestHeader("board-front-service", "board-front-service-header")
.addResponseHeader("board-front-service", "board-front-service-header"))
.uri("http://localhost:9090/"))
.build();
}
}