【问题标题】:How can I disable automatic https redirect for nginx ingress controller?如何禁用 nginx 入口控制器的自动 https 重定向?
【发布时间】:2019-10-06 08:00:21
【问题描述】:

我为我的本地 minikube 启用了入口插件,并创建了一个自定义 pod、服务和入口。之后,我将入口主机添加到我的主机文件中,它指向 minikube ip,以便我可以使用浏览器访问它。访问 url 时,浏览器告诉我,由于“HTTP Strict Transport Security (HSTS)”标头,我被重定向到该 url 的 https 版本。 Firefox 和 chrome 不允许我继续,因为他们说证书(Kubernetes Ingress Controller Fake Certificate)仅对 url “ingress.local”有效。使用 IE11,我可以接受风险并实际继续。我可以做些什么来防止被重定向到 https?我不想要https,只想要http。这是我的服务和入口的 yaml 文件。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: foobar-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: foobar.app
    http:
      paths:
      - path: /
        backend:
          serviceName: foobar-frontend
          servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: foobar-frontend
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: foobar-frontend

【问题讨论】:

    标签: kubernetes minikube nginx-ingress


    【解决方案1】:

    你需要在 Nginx configmap 中禁用 ssl-redirect(通常在 ingress-nginx 命名空间中命名为 nginx-configuration),如下所示:

    kind: ConfigMap
    metadata:
      labels:
        app: ingress-nginx
      name: nginx-configuration
      namespace: ingress-nginx
    data:
      ssl-redirect: "false"
    

    之后你需要重启 Nginx ingress pod。

    您可能还需要清除浏览器重定向缓存:How long does Chrome remember a 301 redirect?

    【讨论】:

      【解决方案2】:

      看来我已经猜对了。浏览器只是粗暴地缓存了 HSTS 标头,这就是我总是被重定向的原因。即使清理缓存也没有用。所以我不得不把我的 ingress 改成另一个名字,然后它就起作用了。

      【讨论】:

      • 你可能要故意删除chrome://net-internals/#hsts底部获取的HSTS记录
      猜你喜欢
      • 1970-01-01
      • 2021-07-28
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 2015-07-16
      • 2018-10-09
      相关资源
      最近更新 更多