我有一个允许白标的 Web 应用程序,用户可以在其中添加他们的域、转发 DNS 并在加载用户域时加载它的应用程序。
我正在使用技术将 ingress nginx 转发到我的应用程序catchAll
。这是 ingress.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: linkfy-frontend-ingress
namespace: linkfy
annotations:
cert-manager.io/cluster-issuer: letsencrypt
spec:
ingressClassName: nginx
tls:
- hosts:
- example.tld
secretName: example.tld
rules:
- host: example.tld
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 3000
- host: "" # catchAll
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 3000
此方法效果很好。非安全请求http
从指向负载均衡器的任何域路由到前端。
但是我也需要支持 tls。Hosts 不支持空白字符串“”或星号“*”
注意:我可以使用证书管理器从我的应用程序创建 tls 证书。证书创建工作正常。
唯一的挑战是加载与传入域 (catchAll) 匹配的证书。
如果我有 example2.tld,我需要加载为 example2.tld 创建的证书。