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

Envoy配置双Listener双Cluster后浏览器访问报ERR_CONNECTION_CLOSED求助

问题分析与解决方案

你的核心问题是Envoy配置的结构不符合规范——你把clusters节点嵌套在了每个listener的内部,但按照Envoy的静态资源配置规则,clusters应该和listeners平级,都作为static_resources的直接子元素。

当你单独使用每个Listener配置时,可能无意识地把clusters放在了正确的位置,所以能正常工作;但合并两个Listener时,错误的嵌套结构导致Envoy无法正确加载集群配置,Listener找不到对应的后端集群,最终触发ERR_CONNECTION_CLOSED错误。

修正后的完整配置

static_resources:
  listeners:
    - name: listener_back_end
      address:
        socket_address: { address: 0.0.0.0, port_value: 9090 }
      filter_chains:
        - filters:
            - name: envoy.tcp_proxy
              config:
                stat_prefix: ingress_tcp
                cluster: back_end
          tls_context:
            common_tls_context:
              tls_certificates:
                - certificate_chain:
                    filename: "/ProxyServerConfig/SSL/certificate.crt"
                  private_key:
                    filename: "/ProxyServerConfig/SSL/private.key"
    - name: listener_front_end
      address:
        socket_address: { address: 0.0.0.0, port_value: 443 }
      filter_chains:
        - filters:
            - name: envoy.tcp_proxy
              config:
                stat_prefix: ingress_tcp
                cluster: front_end
          tls_context:
            common_tls_context:
              tls_certificates:
                - certificate_chain:
                    filename: "/ProxyServerConfig/SSL/certificate.crt"
                  private_key:
                    filename: "/ProxyServerConfig/SSL/private.key"
  # 注意:clusters和listeners同级,不属于任何listener
  clusters:
    - name: back_end
      connect_timeout: 0.2s
      type: STATIC
      lb_policy: ROUND_ROBIN
      hosts: [{ socket_address: { address: 192.168.1.4, port_value: 1990 }}]
    - name: front_end
      connect_timeout: 0.2s
      type: STATIC
      lb_policy: ROUND_ROBIN
      hosts: [{ socket_address: { address: 192.168.1.5, port_value: 8081 }}]

额外排查建议

  • 验证配置合法性:先通过Envoy的配置校验命令确认格式正确:
    envoy --mode validate -c your-config-file.yaml
    
  • 查看启动日志:用debug级别日志启动Envoy,排查集群加载或Listener初始化的错误:
    envoy -c your-config-file.yaml -l debug
    
  • 检查后端连通性:在Envoy所在主机上,测试到两个后端集群的网络可达性:
    telnet 192.168.1.4 1990
    telnet 192.168.1.5 8081
    
  • 端口占用检查:确保9090和443端口没有被其他进程占用:
    netstat -tulpn | grep -E "9090|443"
    

内容的提问来源于stack exchange,提问作者Николай Деменков

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:42:48