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 를 통 해 마이크로 서비스 에서 맵 경로 까지 의 정규 설정 을 실현 합 니 다.예 를 들 면:
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 의 높 은 사용 가능
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.