OpenShift解决Route-Https--Http无法跳转的问题
问题现象
通过Route创建的edge类型的HTTPS,后端应用使用的是HTTP服务。但在某些情况下,后端应用使用Location时,Location地址为HTTP地址。这时浏览器将因为无法访问HTTP服务而无法实现跳转。
原理
Haproxy在返回客户端时,检查返回Head,将Location地址中的HTTP替换为HTTPS,从而让浏览器获取正确的跳转链接。
解决办法
更新haproxy-config.template,为edge请求的应用添加标注判断haproxy.router.openshift.io/location-scheme
,如果它为https,则将Location请求中的http替换为https。
具体配置如下:搜索 ssl_fc_alpn -i h2
在其后添加如下配置
1 | {{- if eq "https" (index $cfg.Annotaions "haproxy.router.openshift.io/location-scheme")}} |
示例
1 | apiVersion: route.openshift.io/v1 |
对于已经创建的Route可通过命令设置annotations
1 | oc annotate route web-app haproxy.router.openshift.io/location-scheme="https" |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论