我正在尝试使用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
)时,它可以正常工作。