Kubernetes集群下NGINX代理Kiwi TCMS出现SSL警告如何隐藏
问题根因
Kiwi TCMS的SSL连接警告基于服务端接收到的请求协议判断,你当前的架构中外部HTTPS流量在Nginx侧卸载证书后,内部通过HTTP协议转发到Kiwi的80端口,Kiwi识别到的请求协议为HTTP,因此触发警告,和外部实际是否加密无关。
以下是两种无需修改源代码、无需重新构建镜像的解决方案:
方案1:配置代理头+信任代理环境变量(推荐,无副作用)
该方案是Kiwi TCMS官方支持的标准反向代理SSL适配方案:
- 调整你的Nginx(或Nginx Ingress)配置,新增转发头,把客户端真实访问协议传递给Kiwi:
如果你使用K8s原生Nginx Ingress,可直接给Ingress资源添加如下注解实现:proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host;annotations: nginx.ingress.kubernetes.io/use-forwarded-headers: "true" - 修改Kiwi TCMS的Deployment配置,新增两个环境变量,开启代理头信任并关联SSL标识:
重新apply Deployment生效后,Kiwi会自动识别到用户实际使用HTTPS访问,警告会自动消失。env: - name: KIWI_USE_X_FORWARDED_HOST value: "True" - name: KIWI_SECURE_PROXY_SSL_HEADER value: "HTTP_X_FORWARDED_PROTO,https"
方案2:Nginx注入样式隐藏警告(应急方案)
如果暂时无法调整Kiwi的部署配置,可通过Nginx的内容替换功能在返回页面中注入CSS直接隐藏警告元素:
- 在Nginx对应路由的location配置段添加如下规则:
如果使用Nginx Ingress,可通过sub_filter_types text/html; sub_filter_once on; sub_filter '</head>' '<style>.alert-warning:has(> a[href*="ssl"]) { display: none !important; }</style></head>';nginx.ingress.kubernetes.io/configuration-snippet注解注入上述配置即可生效。
两种方案均不会修改Kiwi TCMS的原有功能,仅调整流量链路配置即可实现需求。
内容的提问来源于stack exchange,提问作者Pascal
相关产品推荐
相关产品推荐

