我正在尝试使用nginx-ingress-controller实现SSL Passtrough。这是我的入口对象:

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标志存在于 Controller args中。
当请求通过入口 Controller 到达我的基础服务时,我正在尝试解析SNI,以找出用于查询我应该出示的证书的域,但是该服务找不到SNI并返回此错误:
{"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)时,它可以正常工作。

07-27 16:49