问题描述
微服务,如果 context-path=“/” , gateway 路由没有问题,可以正确解析
但是如果路由到 context-path=“/webui” 就有问题,特别是浏览器访问
如果访问
(1)http://ip:port//webui/ 访问正常
(2)http://ip:port//webui/xxx 访问正常
(3) http://ip:port/webui 访问出现问题了(注意少了“/”)
浏览器自动转跳到了容器内部的ip , 外部IP是 192.168.0.X , docker内部IP是 172.17.0.X
浏览器URL自动转跳到: http://172.17.0.x/webui/ (注意是转跳,不是代理), 因为这个IP外部不可访问,导致直接出错
原因分析:
感觉应该还是 spring 的内带tomcat context-path 的机制问题 和 spring cloud gate还有适配问题
解决方案:
加上 路由重写过滤,把http://ip:port/webui 访问强制换成 http://ip:port/webui/ (注意“/”)
filters: - RewritePath=/webui, /webui/
问题解决