Use case
我使用这个头盔图在我的Kubernetes集群中部署了nginx入口控制器:
https://github.com/helm/charts/tree/master/stable/nginx-ingress
我为我的前端服务webserver创建了一个入口资源,它应该从非www重定向到www版本 . 我也在使用SSL .
The problem
当我访问我的网站的www版本时,一切都很好,nginx使用我的Lets Encrypt SSL证书(在正确的命名空间中作为秘密存在)提供页面 . 但是,当我访问网站的非www版本时,我在浏览器中获得了失败的SSL证书页面(NET :: ERR_CERT_AUTHORITY_INVALID),并且可以看到该页面是使用Kubernetes ingress假证书提供的 . 我认为这也是为什么重定向到www版本根本不起作用的原因 .
This is my ingress resource (actual hostnames have been redacted):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
creationTimestamp: 2018-10-03T19:34:41Z
generation: 3
labels:
app: nodejs
chart: nodejs-1.0.1
heritage: Tiller
release: example-frontend
name: example-frontend
namespace: microservices
resourceVersion: "5700380"
selfLink: /apis/extensions/v1beta1/namespaces/microservices/ingresses/example-frontend
uid: 5f6d6500-c743-11e8-8aaf-42010a8401fa
spec:
rules:
- host: www.example.io
http:
paths:
- backend:
serviceName: example-frontend
servicePort: http
path: /
tls:
- hosts:
- example.io
- www.example.io
secretName: example-frontend-tls
The question
为什么nginx也不使用非www版本提供的证书?
2 回答
您似乎通过添加其他规则修复了接收无效证书的问题 .
重定向的问题看起来与this有关,并且在撰写本文时并未修复 . 但是,在同一链接上描述了一种解决方法:
我通过在规则中添加非www版本来修复它 . 重定向仍然不起作用,但页面使用正确的SSL证书提供服务 .