Microservices 如何成功地将特使送到我的第二次服务?

Microservices 如何成功地将特使送到我的第二次服务?,microservices,envoyproxy,Microservices,Envoyproxy,我正在尝试使用来自的特使前端代理配置部署2个服务 我的第一个服务是主站点,它应该在“/”下工作,第二个服务是后台管理,它应该在“/管理”下工作。当我将第一个服务的前缀声明为“/”时,问题就开始了。在那之后,特使根本不会将流量路由到我的管理服务 我的特使yaml是: static_resources: listeners: - address: socket_address: address: 0.0.0.0 port_value: 80 filte

我正在尝试使用来自的特使前端代理配置部署2个服务

我的第一个服务是主站点,它应该在“/”下工作,第二个服务是后台管理,它应该在“/管理”下工作。当我将第一个服务的前缀声明为“/”时,问题就开始了。在那之后,特使根本不会将流量路由到我的管理服务

我的特使yaml是:

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
的处理程序?如果没有,则必须在转发前重写前缀。