Spring Cloud(Finchley 버 전)배 워 주세요.-17-Zuul 경로 설정 상세 설명.

더 읽 기
설명:SpringCloud 시리즈 필자 독학 시리즈,학습 원천 은 주 립 블 로그  http://www.itmuch.com/ 。이곳 에 블 로 그 를 옮 기 는 것 은 앞으로 의 학습 을 편리 하 게 하기 위해 서다.
원본http://www.itmuch.com/spring-cloud/finchley-17/
 
지난 절( 저 한테 Spring Cloud(Finchley 버 전)배 워 주세요.-16-Zuul. )중,이미 Zuul 로 Eureka 에 전송 하 는 마이크로 서 비 스 를 실현 했다.기본 경로 규칙 은:접근$ZUUL_URL/ /** 4.567914 로 전 송 됩 니 다. 의  。
그러나 실제 프로젝트 에서 스스로 경로 규칙 을 정의 해 야 한다.Zuul 의 경로 설정 은 매우 유연 하고 간단 하 다.이 절 은 Zuul 의 경로 설정 을 상세 하 게 설명 한다.
1.지정 한 마이크로 서비스의 접근 경 로 를 사용자 정의 합 니 다.
설정 됐다.예 를 들 면:
 
zuul:
  routes:
    microservice-provider-user: /user/**

이렇게 설정 하면 microservice-provider-user 마이크로 서 비 스 는/user/*경로 에 매 핑 됩 니 다.
2.지정 한 마이크로 서비스 무시
서 비 스 를 무시 하 는 것 은 매우 간단 해서 사용 할 수 있다. 무시 해 야 할 서 비 스 를 설정 합 니 다.여러 개 는 쉼표 로 구 분 됩 니 다.예 를 들 면:
 
zuul:
  ignored-services: microservice-provider-user,microservice-consumer-movie

이렇게 하면 Zuul 은 microservice-provider-user 와 microservice-consumer-movie 마이크로 서 비 스 를 무시 하고 다른 마이크로 서비스 만 대리 할 수 있 습 니 다.
3.모든 마이크로 서 비 스 를 무시 하고 지정 한 마이크로 서비스 만 수행 합 니 다.
많은 장면 에서 우 리 는 Zuul 대리 가 지정 한 마이크로 서비스 만 원 할 수 있 습 니 다.이때/** 설정
 
zuul:
  ignored-services: '*'   #   '*'        
  routes:
    microservice-provider-user: /user/**

이렇게 하면 Zuul 은 microservice-provider-user 마이크로 서비스 만 할 수 있 습 니 다.
4.마이크로 서비스의 serviceId 와 대응 하 는 경 로 를 동시에 지정 합 니 다.
예 를 들 면:
 
zuul:
  routes:
    user-route:                   #       ,user-route         ,      。
      service-id: microservice-provider-user
      path: /user/**              # service-id     

이 예 설정 의 효 과 는 예제(1)와 같 습 니 다.
5.path 와 URL 을 동시에 지정 합 니 다.예 를 들 어:
 
zuul:
  routes:
    user-route:                   #       ,user-route         ,      。
      url: http://localhost:8000/ #    url
      path: /user/**              # url     。

이렇게 하면zuul.routes. serviceId =  4.567914 에 투사 합 니 다. 。
주의해 야 할 것 은 이러한 방식 으로 설 정 된 경 로 는 Hystrix Command 로 실행 되 지 않 으 며,동시에 Ribbon 으로 여러 URL 을 부하 할 수 없습니다.예(6)이 문 제 를 해결 할 수 있다.
6.path 와 URL 을 동시에 지정 하고 Zuul 의 Hystrix,Ribbon 특성 을 파괴 하지 않 습 니 다.
 
zuul:
  routes:
    user-route:
      path: /user/**
      service-id: microservice-provider-user
ribbon:
  eureka:
    enabled: false
microservice-provider-user:
  ribbon:
    listOfServers: localhost:8000,localhost:8001

이렇게 하면 path 와 URL 을 지정 할 뿐만 아니 라 Zuul 의 Hystrix 와 Ribbon 특성 도 파괴 하지 않 을 수 있 습 니 다.
7.정규 표현 식 을 사용 하여 Zuul 의 경로 일치 규칙 을 지정 합 니 다.
Pattern Service Route Mapper 를 통 해 마이크로 서비스 에서 맵 경로 까지 의 정규 설정 을 실현 합 니 다.예 를 들 면:
 
@Bean
public PatternServiceRouteMapper serviceRouteMapper() {
  //       PatternServiceRouteMapper(String servicePattern, String routePattern)
  // servicePattern        
  // routePattern      
  return new PatternServiceRouteMapper("(?^.+)-(?v.+$)", "${version}/${name}");
}

이 코드 를 통 해 microservice-provider-user-v1 과 같은 마이크로 서 비 스 를/v1/microservice-provider-user/*에 투사 할 수 있 습 니 다.
8.경로 접두사
예시 1:
 
zuul:
  prefix: /api
  strip-prefix: false
  routes:
    microservice-provider-user: /user/**

이렇게 하면 Zuul 의/api/microservice-provider-user/1 경 로 를 방문 하면 요청 은 microservice-provider-user 의/api/1 로 전 송 됩 니 다.
예시 2:
 
zuul:
  routes:
    microservice-provider-user: 
      path: /user/**
      strip-prefix: false

이렇게 Zuul 의/user/1 경 로 를 방문 하면 요청 은 microservice-provider-user 의/user/1 로 전 송 됩 니 다.
TIPS:
① 이 문제 의 보조 적 인 이 해 를 참고 할 수 있다. https://github.com/spring-cloud/spring-cloud-netflix/issues/1365
9.일부 경로 무시
앞에서 우 리 는 마이크로 서 비 스 를 어떻게 무시 하 는 지 설명 하 였 으 나,때때로 우 리 는 더욱 세밀 한 경로 통제 가 필요 하 다.예 를 들 어 저 희 는 Zuul 에 게 특정한 마이크로 서 비 스 를 대리 하 게 하 는 동시에 이 마이크로 서비스의 민감 한 경 로 를 보호 하고 싶 습 니 다.이 때 ignored Patterns 를 사용 하여 무시 하 는 정규 를 지정 할 수 있 습 니 다.예 를 들 면:
 
zuul:
  ignoredPatterns: /**/admin/**   #       /admin/   
  routes:
    microservice-provider-user: /user/**

이렇게 하면 microservice-provider-user 마이크로 서 비 스 를/user/*경로 에 표시 할 수 있 으 나 이 마이크로 서비스 에 포 함 된 모든/admin/경 로 를 무시 합 니 다.
잔재주
독자 가 Zuul 경로 의 규칙 을 파악 하지 못 하면 com.netflix 가방 의 로그 단 계 를 DEBUG 로 설정 할 수 있 습 니 다.이렇게 하면 Zuul 은 리 트 윗 의 구체 적 인 세부 사항 을 인쇄 하여 Zuul 의 경로 설정 을 잘 이해 하도록 도와 줄 것 이다.예 를 들 어:
 
logging:
  level:
    com.netflix: DEBUG

관련 글
저 한테 Spring Cloud(Finchley 버 전)-16-ZuulSpring Cloud 에 내 장 된 Zuul 필터 상세 설명Spring Cloud Edgware 의 새로운 기능 5:filers 단점오류 정정:Zuul&Spring Cloud Gateway&Linkerd 성능 대비Zuul 의 높 은 사용 가능 
 

좋은 웹페이지 즐겨찾기