1

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

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

我的前特使.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

请指教。

4

1 回答 1

3

问题是您将“/”作为第一个前缀匹配器,“/”作为前缀将匹配所有请求,它将匹配“/”请求以及“/admin”请求。将匹配的顺序更改为先有“/admin”,然后是“/”。它应该可以正常工作。

于 2019-03-08T09:09:11.763 回答