You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Envoy作为转发(Egress出口)代理,解决no healthy upstream报错

你当前配置报错的核心原因是集群使用了ORIGINAL_DST类型,该类型仅适用于操作系统层面(如iptables、pf)做流量透明重定向的场景。你使用curl -x显式指定代理的请求模式下,Envoy无法获取到原始目的地址的连接元数据,无法匹配上游节点,因此返回no healthy upstream错误。

正确通用HTTP Egress代理配置

下面是支持显式代理请求的标准配置,使用Envoy动态转发过滤器实现无需预配置上游集群的通用代理能力:

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 10000 }
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: egress_http
          # 开启解析代理请求的完整URL
          http_protocol_options:
            allow_absolute_url: true
          access_log:
          - name: envoy.access_loggers.stdout
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
          http_filters:
          # 加入动态转发过滤器
          - name: envoy.filters.http.dynamic_forward_proxy
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.dynamic_forward_proxy.v3.FilterConfig
              dns_cache_config:
                name: dynamic_forward_proxy_cache
                dns_lookup_family: V4_ONLY
          - name: envoy.filters.http.router
          route_config:
            name: egress_route
            virtual_hosts:
            - name: default_egress
              domains: ["*"]
              routes:
              - match: { prefix: "/" }
                route:
                  cluster: dynamic_egress_cluster
                  auto_host_rewrite: true

  clusters:
  - name: dynamic_egress_cluster
    connect_timeout: 6s
    lb_policy: ROUND_ROBIN
    # 集群类型指定为动态转发
    cluster_type:
      name: envoy.clusters.dynamic_forward_proxy
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.clusters.dynamic_forward_proxy.v3.ClusterConfig
        dns_cache_config:
          name: dynamic_forward_proxy_cache
          dns_lookup_family: V4_ONLY
测试验证

使用原命令启动Envoy后,重新执行curl测试即可正常返回结果:

curl -x http://127.0.0.1:10000 http://proton4.eng.vmware.com
补充说明

如果你需要使用ORIGINAL_DST模式做透明代理,需要额外在Mac系统配置pf规则,将所有出口80/443流量重定向到Envoy的10000端口,无需在客户端指定代理参数即可实现全量流量代理。

内容的提问来源于stack exchange,提问作者Hiccup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:24:03