谷歌云kubernetes入口不重定向到https

问题描述 投票:0回答:1

我在谷歌云 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

django docker google-kubernetes-engine kubernetes-ingress nginx-ingress
1个回答
0
投票

假设您有服务的证书和密钥,请为入口网关创建 Kubernetes 密钥。在服务器下:服务器下应该已经有一个部分:用于端口 80 HTTP。 要将 HTTP 重定向到 HTTPS,请在 HTTP 服务器部分的 tls 下添加值 httpsRedirect: true。

© www.soinside.com 2019 - 2024. All rights reserved.