[11월3주차]Spring Cloud ApiGateway, 리버스 프록시 구현.

carlkim·2023년 10월 19일
0

• 프로젝트 생성
• application.yaml 에서 프록스 설정
• Java 코드로 프록시 설정

프로젝트 생성

의존성

1. 롬복 – 코드 간소화 , slf4j 로깅 기능 사용
2. Devtools – 개발 편의성
3. SpringCloudGateway – 의존성
4. Eureka 서버를 발견할 수 있는 클라이언트

application.yaml 에서 프록스 설정
1. 8000번 포트로 게이트웨이를 설치
2. eureka

  • eureka 등록하지 않는 설정
  • 레지스터 등록도 하지 않음 설정
  • eureka 서버 주소를 입력
  1. 어플리케이션 이름 gateway-service 로 등록
  2. cloud 아래부터 게이트웨이 설정
  3. localhost:8000/board-api-service 로 들어오면
    localhost:8080 으로 보낸다
  4. localhost:8000/board-front-service 로 들어오면
    localhost:9090 으로 보낸다.
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();
    }
}
profile
기본부터 가면 됩니다.

0개의 댓글