2개의 서비스가 있고 이 서비스에 대한 API 게이트웨이를 만들고 싶습니다.
서비스 1
- 이름: 레온
- 호스트: api.leon.com
종점:
/
/jungle
서비스 2
- 이름 : 호랑이
- 호스트 : api.tiger.com
종점:
/
/jungle
예상 동작:
API 게이트웨이는 다음과 같이 요청을 처리합니다.
apigateway.com/leon =======>> Leon service '/'
apigateway.com/leon/jungle=======>> Leon service '/jungle'
apigateway.com/tiger =======>> Tiger service '/'
apigateway.com/tiger/jungle=======>> Tiger service '/jungle'
따라서 들어오는 요청 URL의 첫 번째 경로를 서비스와 일치시키고 싶습니다.
그리고 내 게이트웨이. 다음과 같은 config.yaml 파일:
http:
port: 8080
admin:
port: 9876
host: localhost
apiEndpoints:
leon:
host: localhost
methods : [ 'POST', 'GET' ]
paths: '/*'
tiger:
host: localhost
methods : ['POST', 'GET']
paths: '/*'
serviceEndpoints:
leonsrv:
url: 'http://leon-service.us-west-2.compute.amazonaws.com/'
tigersrv:
url: 'http://tiger-service.us-west-2.compute.amazonaws.com/'
policies:
-basic-auth
-cors
-expression
-key-auth
-log
-oauth2
-proxy
-rate-limit
pipelines:
-name: leon
apiEndpoints:
-leon
policies:
-proxy:
-action:
serviceEndpoint: leonsrv
changeOrigin: true
-name: tiger
apiEndpoints:
-tiger
policies:
-proxy:
-action:
serviceEndpoint: tigersrv
changeOrigin: true
하지만 작동하지 않습니다. 타이거 서비스에 요청을 보낼 수 없습니다.
이 문제를 어떻게 해결할 수 있습니까? 도와주세요!
- 답변 # 1
apiEndpoints 섹션에 정의된 두 끝점은 동일합니다. http://localhost/*. Express-gateway가 이들을 구별할 수 있도록 하려면 더 많은 대상 URL을 포함해야 합니다.