我在谷歌云 kubernetes 中部署了一个 django 应用程序,它一切正常,我可以从 https 访问我的网站并使用它。但是当我输入网址时,它会用http打开域,如果我写https我也可以访问,我搜索了很多并在互联网上尝试了很多东西仍然没有成功。 有注释
kubernetes.io/ingress.allowHTTP: "false" # <-- this one
这可以禁用http访问,但我想重定向到https而不是阻塞,如果我在浏览器中写入我的域名,它会首先转到http。 它的所有工作都是通过 ssl 和 nginx 入口进行的,我只是无法将访问从 http 重定向到 https。
这是我的 nginx 入口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: django-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.global-static-ip-name: django-ip
spec.ingressClassName: "nginx"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" # <--- this one is not working
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/use-forwarded-headers: "true"
spec:
tls:
- hosts:
- example-django.com
secretName: django-certs
defaultBackend:
service:
name: django-svc
port:
name: django-core-http
rules:
- host: example-django.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: django-svc
port:
name: django-core-http
尝试过注释
kubernetes.io/ingress.allowHTTP: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
用这个安装了 nginx ingress https://kubernetes.github.io/ingress-nginx/deploy/#gce-gke
假设您有服务的证书和密钥,请为入口网关创建 Kubernetes 密钥。在服务器下:服务器下应该已经有一个部分:用于端口 80 HTTP。 要将 HTTP 重定向到 HTTPS,请在 HTTP 服务器部分的 tls 下添加值 httpsRedirect: true。