【问题标题】:Hostname (SNI) missing while using nginx ingress SSL Passtrough to underlying service使用 nginx 入口 SSL 直通底层服务时缺少主机名 (SN​​I)
【发布时间】:2020-06-25 17:49:04
【问题描述】:

我正在尝试使用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 标志存在于控制器 args 中。

当请求通过入口控制器到达我的底层服务时,我试图解析 SNI 以找出用于找出我应该提供的证书的域,但服务找不到 SNI 并返回此错误:

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

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

提前感谢您的帮助

【问题讨论】:

  • 您如何尝试从入口获取 SNI?您的云提供商是什么?

标签: nginx kubernetes nginx-ingress


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2019-12-10
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多