我正在尝试使用envoy github page的特使前端代理配置来部署2个服务
我的第一个服务是应在“ /”下工作的主站点,第二个服务是应在“ / admin”下工作的后台管理。当我将第一个服务的前缀声明为“ /”时,问题开始了。此后,Envoy完全不会将流量路由到我的管理服务。
我的front-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
请咨询。
答案 0 :(得分:0)
问题是您将“ /”作为第一个前缀匹配器,“ /”作为前缀将与所有请求匹配,它将与“ /”请求以及“ /”匹配管理员”请求。将匹配的顺序更改为先具有“ / admin”,然后具有“ /”。应该可以。