「NGINX Ingress Controller」- 修改默认重定向状态码 @20210417
问题描述
在NGINX Ingress Controller中,开启强制SSL跳转之后,当访问HTTP时将被重定向到HTTPS地址。
但是在IE 8浏览器中无法进行跳转…………
问题原因
因为IE 8浏览器不支持308状态码。同时「Permanent redirect 308 not supported in IE11 #1825」指出IE 11浏览器也不支持308状态码。
当使用308状态码时,在重定向POST请求时可以保留“有效载荷”(有效载荷,简单理解成POST请求的数据即可)。
解决办法
只能修改返回状态码。这需要修改Nginx的ConfigMap对象,添加http-redirect-code: "301"配置。
配置文件结构大致如下:
apiVersion: v1 kind: ConfigMap metadata: labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx name: nginx-configuration namespace: ingress-nginx data: http-redirect-code: "301"
相关文章
「Kubernetes」- mandatory.yaml (modified)
「Kubernetes」- service-nodeport.yaml
「Kubernetes」- example.yaml
参考文献
Permanent redirect 308 not supported in IE11 #1825
Change default redirect to 301 to support old internet explorer versions #2002
Kubernetes Nginx Ingress HTTP to HTTPS redirect via 301 instead of 308?
NGINX Ingress Controller/ConfigMaps/http-redirect-code