Nginx Ingress中默认开启HSTS会导致HTTP请求重定向到HTTPS
问题现象
Nginx Ingress中没有配置HTTP重定向至HTTPS,nginx.ingress.kubernetes.io/ssl-redirect设置为false,但是访问HTTPS之后再访问HTTP会被重定向成HTTPS。
问题根因
NGINX Ingress控制器默认开启HTTP Strict Transport Security(HSTS)配置,当客户端初次访问开启HSTS的服务端时,服务端会在返回客户端时携带HSTS的响应头,例如:
Strict-Transport-Security: max-age=31536000; includeSubDomains
此时浏览器会记录这个HSTS响应头,并记住该域名在接下来一段时间内(指定的max-age值)只能通过HTTPS访问。当客户端下次通过HTTP访问同一域名时,浏览器会将请求直接重定向到HTTPS。
解决方案
如果客户端不希望支持HTTP自动转到HTTPS协议时,您可以在NGINX Ingress控制器插件的配置中关闭HSTS,关于HSTS的更多说明请参见HSTS。
- 登录CCE控制台,单击集群名称进入集群,在左侧导航栏中选择“插件中心”,在右侧找到NGINX Ingress控制器插件,单击“管理”。
- 找到Ingress对应的控制器实例,单击“编辑”。
- 在Nginx配置参数中选择“YAML配置”,并将hsts参数设置为false。
- 单击“确定”,等待插件更新完成。
客户端HSTS默认是有缓存的,当关闭NGINX Ingress控制器的HSTS后,请您清理客户端缓存。