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

Envoy不终止TLS时基于SNI替换域名前缀路由配置排错

问题结论

该需求完全可实现,你现有配置存在4个核心问题,修正后即可正常运行:

  • YAML层级缩进错误:你错误将HTTP Lua过滤器配置嵌套到了sni_dynamic_forward_proxy的dns_cache_config字段下,属于语法错误,配置无法被Envoy正常加载。
  • 过滤器类型选错:你使用的envoy.filters.http.lua是HTTP层过滤器,仅在Envoy终止TLS、解密得到HTTP流量后才会触发。你当前是TCP透传(不终止TLS)场景,HTTP过滤器链根本不会执行,你设置的REQUESTED_SERVER_NAME变量永远不会生效,TCP代理无法读取到该值。
  • 多余配置无效:tcp_proxy中的tunneling_config是用于HTTP CONNECT隧道场景的配置,纯TCP透传原始TLS流量不需要该配置,保留反而会导致转发逻辑异常。
  • 逻辑实现冗余:sni_dynamic_forward_proxy本身就支持基于正则重写从TLS握手明文提取的SNI值,不需要额外写Lua脚本读取根本拿不到的HTTP Host头(不终止TLS时HTTP头是加密的,无法读取)。
修正后的可运行配置
static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        protocol: TCP
        address: 0.0.0.0
        port_value: 9002
    listener_filters:
    - name: envoy.filters.listener.tls_inspector
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.filters.listener.tls_inspector.v3.TlsInspector
    filter_chains:
    - filters:
      - name: envoy.filters.network.sni_dynamic_forward_proxy
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.sni_dynamic_forward_proxy.v3.FilterConfig
          port_value: 443
          # 自动将转发给上游的TLS握手中的SNI修改为重写后的域名,若上游不校验SNI可设为false
          rewrite_sni_to_upstream_address: true
          # 正则匹配替换SNI:把dd-前缀替换为wd-
          regex_rewrite:
            pattern:
              regex: "^dd-(.*)$"
            substitution: "wd-\\1"
          dns_cache_config:
            name: dynamic_forward_proxy_cache_config
            dns_lookup_family: V4_ONLY
      - name: envoy.filters.network.tcp_proxy
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
          stat_prefix: tcp
          cluster: dynamic_forward_proxy_cluster
  clusters:
  - name: dynamic_forward_proxy_cluster
    lb_policy: CLUSTER_PROVIDED
    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_config
          dns_lookup_family: V4_ONLY
配置说明
  • 全程不做TLS终止:TLS握手后的加密流量会被原样透传到上游,仅修改ClientHello明文中的SNI字段,符合你的透传要求。
  • 配置自动完成SNI提取、前缀替换、DNS解析、转发全流程,不需要额外脚本。
  • 支持所有动态server_name场景匹配,不需要预先配置域名规则。

内容的提问来源于stack exchange,提问作者kane.zorfy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:48:43