사붐이개발일기

[Eureka] ApiGateway Routers 재정의 (/user-service/ 제거) 본문

인프런/[Spring Cloud] MSA-이도원

[Eureka] ApiGateway Routers 재정의 (/user-service/ 제거)

sabeom 2023. 12. 1. 17:03

 

ApiGateway application.yml

server:
  port: 8000

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka

spring:
  application:
    name: apigateway-service
  cloud:
    gateway:
      default-filters:
        - name: GlobalFilter
          args:
            baseMessage: Spring Cloud Gateway Global Filter
            preLogger: true
            postLogger: true
      routes:
#        - id: user-service
#          uri: lb://USER-SERVICE
#          predicates:
#            - Path=/user-service/**
        - id: user-service
          uri: lb://USER-SERVICE
          predicates:
            - Path=/user-service/login
            - Method=POST
          filters:
            - RemoveRequestHeader=Cookie  # POST로 들어온값은 매번 새로운 데이터처럼 인식하게 만들기 위해 requestHeader값 초기화
            - RewritePath=/user-service/(?<segment>.*), /$\{segment}  # url_path 재정의
        - id: user-service
          uri: lb://USER-SERVICE
          predicates:
            - Path=/user-service/users
            - Method=POST
          filters:
            - RemoveRequestHeader=Cookie  # POST로 들어온값은 매번 새로운 데이터처럼 인식하게 만들기 위해 requestHeader값 초기화
            - RewritePath=/user-service/(?<segment>.*), /$\{segment}  # url_path 재정의
        - id: user-service
          uri: lb://USER-SERVICE
          predicates:
            - Path=/user-service/**
            - Method=GET
          filters:
            - RemoveRequestHeader=Cookie  # GET으로 들어온값은 매번 새로운 데이터처럼 인식하게 만들기 위해 requestHeader값 초기화
            - RewritePath=/user-service/(?<segment>.*), /$\{segment}  # url_path 재정의
        - id: catalog-service
          uri: lb://CATALOG-SERVICE
          predicates:
            - Path=/catalog-service/**
        - id: order-service
          uri: lb://ORDER-SERVICE
          predicates:
            - Path=/order-service/**
          filters:
#            - AddRequestHeader=first-request, first-request-header2
#            - AddResponseHeader=first-response, first-response-header2
#            - CustomFilter

 

 

User-Service application.yml

eureka:
  instance:
    instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
    prefer-ip-address: true
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka
  • eureka.instance.prefer-ip-address
    • 서비스의 호스트 이름이 아닌 IP 주소를 Eureka Server 에 등록하도록 지정 (디폴트 false)
    • 기본적으로 유레카는 호스트 이름으로 접속하는 서비스를 등록하는데 DNS 가 지원된 호스트 이름을 할당하는 서버 기반 환경에서는 잘 동작하지만, 컨테이너 기반의 배포에서 컨테이너는 DNS 엔트리가 없는 임의의 생성된 호스트 이름을 부여받아 시작하므로 컨테이너 기반 배포에서는 해당 설정값을 false 로 하는 경우 호스트 이름 위치를 정상적으로 얻지 못함