Microservices 如何成功地将特使送到我的第二次服务?
我正在尝试使用来自的特使前端代理配置部署2个服务 我的第一个服务是主站点,它应该在“/”下工作,第二个服务是后台管理,它应该在“/管理”下工作。当我将第一个服务的前缀声明为“/”时,问题就开始了。在那之后,特使根本不会将流量路由到我的管理服务 我的特使yaml是:Microservices 如何成功地将特使送到我的第二次服务?,microservices,envoyproxy,Microservices,Envoyproxy,我正在尝试使用来自的特使前端代理配置部署2个服务 我的第一个服务是主站点,它应该在“/”下工作,第二个服务是后台管理,它应该在“/管理”下工作。当我将第一个服务的前缀声明为“/”时,问题就开始了。在那之后,特使根本不会将流量路由到我的管理服务 我的特使yaml是: static_resources: listeners: - address: socket_address: address: 0.0.0.0 port_value: 80 filte
static_resources:
listeners:
- address:
socket_address:
address: 0.0.0.0
port_value: 80
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
codec_type: auto
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains:
- “*”
routes:
- match:
prefix: “/”
route:
cluster: service1
- match:
prefix: “/admin”
route:
cluster: service2
http_filters:
- name: envoy.router
config: {}
clusters:
- name: service1
connect_timeout: 0.25s
type: strict_dns
lb_policy: round_robin
http2_protocol_options: {}
hosts:
- socket_address:
address: service1
port_value: 80
- name: service2
connect_timeout: 0.25s
type: strict_dns
lb_policy: round_robin
http2_protocol_options: {}
hosts:
- socket_address:
address: service2
port_value: 80
admin:
access_log_path: “/dev/null”
address:
socket_address:
address: 0.0.0.0
port_value: 8001
请注意。问题在于,您的第一个前缀是“/”,因为前缀将与所有请求匹配,它将匹配“/”请求以及“/admin”请求。将匹配项的顺序更改为先有“/admin”,然后是“/”。它应该可以正常工作。您的配置看起来很好-它应该匹配
/admin
并将其转发给service2,但是,它将包含/admin
作为路径的一部分。service2是否有/admin
的处理程序?如果没有,则必须在转发前重写前缀。