使用 nginx ingress SSL 直通底层服务时缺少主机名 (SN​​I)

Hostname (SNI) missing while using nginx ingress SSL Passtrough to underlying service

我正在尝试使用 nginx-ingress-controller 实现 SSL 通道。这是我的 Ingress 对象:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
  labels:
    my-label: example
  name: example
  namespace: example
spec:
  rules:
  - host: '*.example.com'
    http:
      paths:
      - backend:
          serviceName: example
          servicePort: 8443
        path: /

控制器参数中存在 --enable-ssl-passtrough 标志。

当请求通过入口控制器到达我的底层服务时,我正在尝试解析 SNI 以找出使用哪个域来找出我应该出示的证书,但该服务找不到 SNI 和 returns 这个错误:

{"level":"debug","ts":1592992137.1836417,"msg":"Error getting server name","error":"No hostname"}

解析时nginx-ingress-controller是否去掉SNI?或者这种行为的原因可能是什么?

在此先感谢您的帮助

我直接联系了 nginx-ingress 开发人员,我得到的信息是这不起作用的原因是 nginx-ingress 不支持的通配符域。

其他所有配置都正确,当将 *.example.com 更改为特定内容(例如 whatever.example.com)时,它可以正常工作。