我如何设置SNI?

SNI仅在V2配置的API中受支持。

目前的实现要求每个FilterChain中的过滤器必须相同。在未来的版本中,这个要求将被放宽,以便SNI可以用来在完全不同的过滤器链之间进行选择。HTTP连接管理器中仍然可以使用域名匹配来选择不同的路由。这是SNI最常见的用例。

以下是满足上述要求的YAML示例。

  1. address:
  2. socket_address: { address: 127.0.0.1, port_value: 1234 }
  3. filter_chains:
  4. - filter_chain_match:
  5. sni_domains: "example.com"
  6. tls_context:
  7. common_tls_context:
  8. tls_certificates:
  9. - certificate_chain: { filename: "example_com_cert.pem" }
  10. private_key: { filename: "example_com_key.pem" }
  11. filters:
  12. - name: envoy.http_connection_manager
  13. config:
  14. route_config:
  15. virtual_hosts:
  16. - routes:
  17. - match: { prefix: "/" }
  18. route: { cluster: service_foo }
  19. - filter_chain_match:
  20. sni_domains: "www.example.com"
  21. tls_context:
  22. common_tls_context:
  23. tls_certificates:
  24. - certificate_chain: { filename: "www_example_com_cert.pem" }
  25. private_key: { filename: "www_example_com_key.pem" }
  26. filters:
  27. - name: envoy.http_connection_manager
  28. config:
  29. route_config:
  30. virtual_hosts:
  31. - routes:
  32. - match: { prefix: "/" }
  33. route: { cluster: service_foo }

返回