如何为Nginx入口控制器禁用自动https重定向?

时间:2019-05-19 22:50:10

标签: kubernetes minikube nginx-ingress

我为本地minikube启用了入口插件,并创建了自定义的pod,服务和入口。之后,我将入口主机添加到我的主机文件中,该主机指向minikube ip,以便我可以通过浏览器访问它。访问该URL时,浏览器告诉我,由于“ HTTP严格传输安全性(HSTS)”标头,我被重定向到该URL的https版本。 Firefox和chrome不允许我继续,因为他们说证书(Kubernetes入口控制器伪证书)仅对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

2 个答案:

答案 0 :(得分:0)

您需要在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入口Pod。

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

答案 1 :(得分:0)

看来我已经正确了。浏览器只是残酷地缓存HSTS标头,这就是为什么我总是被重定向。即使清理缓存也不起作用。因此,我必须将自己的入口更改为另一个名称,然后它才能起作用。