我有两个服务,我想为这些服务创建一个API网关。
服务1
端点:
/
/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但这不管用。我不能向老虎服务部门发出请求。
如何才能解决这个问题,请帮助!
发布于 2022-01-10 14:36:22
在apiEndpoints部分中定义的两个端点是相同的:http://localhost/*。您需要包含更多的目标URL才能让快递网关区分它们:
apiEndpoints:
leon:
host: localhost
methods : [ 'POST', 'GET' ]
paths: [ '/leon/', '/leon/*' ]
tiger:
host: localhost
methods : ['POST', 'GET']
paths: [ '/tiger/', '/tiger/*' ]https://stackoverflow.com/questions/70653039
复制相似问题