如何在UI重定向时保留Kong域名,不跳转至后端服务实际域名
Kong 2.5 访问保留域名解决方案
问题根因
当前出现跳转的核心原因是上游www.example.com返回的3xx重定向响应中,Location响应头携带了上游自身的域名,浏览器收到该响应后会自动跳转到Location指向的地址,最终导致地址栏域名替换为上游服务域名。
另外你当前路由配置中的Host匹配规则为www.mykongeg.com,和你实际使用的Kong域名www.kongeg.com不一致,需要先修正该配置确保路由可以正常匹配请求。
无需修改上游服务的配置方案
只需要在Kong侧调整配置即可实现地址栏保留Kong域名:
- 修正路由基础配置
将路由的Host字段改为www.kongeg.com,确保请求可以正常匹配到该路由。 - 配置响应转换插件替换重定向地址
Kong 2.5内置response-transformer插件,你可以给对应路由绑定该插件,批量替换上游返回的Location响应头中的域名:
# 调用Kong Admin API添加插件示例,<route_id>替换为你实际的路由ID curl -X POST http://<kong_admin_address>:8001/routes/<route_id>/plugins \ --data "name=response-transformer" \ --data "config.replace.headers=Location:/^https?:\/\/www.example.com(.*)$/https:\/\/www.kongeg.com\1/g"
上述配置的正则规则会将所有上游返回的重定向地址中的www.example.com自动替换为www.kongeg.com,浏览器收到替换后的响应后就不会跳转到上游域名。
3. 可选优化配置
如果你的React应用会根据请求Host头动态生成页面内链接,可以将路由的preserve_host参数修改为true,这样Kong转发请求给上游时会携带原始请求的Host头www.kongeg.com,上游生成的链接会直接使用Kong域名,从根源避免出现带上游域名的地址。
提示:如果你的React应用打包时硬编码了
www.example.com作为静态资源前缀,还可以开启response-transformer的响应体替换功能,批量替换HTML/JS/CSS文件中的硬编码上游域名。
内容的提问来源于stack exchange,提问作者Abdul Razak AK
相关产品推荐
相关产品推荐

