我为本地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
答案 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标头,这就是为什么我总是被重定向。即使清理缓存也不起作用。因此,我必须将自己的入口更改为另一个名称,然后它才能起作用。