Open whitebear009 opened 1 month ago
查了一下发现在这个 nginx 上加一条 proxy_ssl_server_name on; 就可以了。
但还是不太理解为什么原来当 https://customplatform-dev.qunhequnhe.com 是 nginx ingress 域名的时候是可以工作的
这个就是这样proxy pass的时候nginx默认不传sni。 nginx ingress会默认装一本证书用于没有匹配sni的场景,higress不会,需要给一个没有指定host的ingress设置一个tls secret才可以。
需要给一个没有指定host的ingress设置一个tls secret才可以
指的是这个注解是吗 higress.io/proxy-ssl-secret
不是,ingress spec里的secret字段
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: empty-sni
namespace: ingress-service
spec:
ingressClassName: nginx
rules:
- http:
paths:
- backend:
service:
name: empty-sni-svc
port:
number: 80
path: /
pathType: Prefix
tls:
- secretName: https-secret-qunhequnhe
---
apiVersion: v1
kind: Service
metadata:
name: empty-sni-svc
namespace: ingress-service
spec:
externalName: higress-gateway.higress-system.svc.cluster.local
ports:
- port: 80
protocol: TCP
targetPort: 80
type: ExternalName
加了这一段 yaml 后确实能工作了,大佬说的是这个意思吗
有一个 nginx 配置了 proxy_pass 转发到了一个 ingress 域名,我把这个 ingress 从 nginx ingress 切换到了 higress 之后就不能工作了。 nginx 的完整配置如下:
customplatform-dev.qunhequnhe.com 是一个 higress gateway 的域名,这里如果配置的是 https,nginx 的 access.log 会报错:
如果配置的是 http 则可以正常访问。而且在 nginx 里 curl https 的这个域名也可以正常返回 200。
看起来跟这个 issue ( https://github.com/alibaba/higress/issues/651 )比较像,但貌似没有提供解决方法。 希望大佬们帮忙瞧瞧。