spring-boot - Zuul 代理在 Tomcat vai SpringBootServlet 上不起作用
问题描述
我正在寻求有关 Zuul 面临的问题的帮助,该问题不适用于将 Tomcat 打包到 WAR 中。
独立它工作得很好,但是当我将打包更改为战争并部署到 Tomcat 时 - 请求似乎没有到达 Zuul。
我已经扩展了 SpringBootServletInitializer 并覆盖了 configure() 方法,但这并没有帮助。
注意:请不要建议我使用嵌入式 Tomcat 独立运行 SpringBoot - 这不起作用,因为我需要将 API 网关合并到现有的基础设施设置中。换句话说,我需要在给定边界条件的情况下实现一个网关——它必须部署在 Tomcat 应用程序服务器上。
@SpringBootApplication
@EnableZuulProxy
public class GatewayApplication extends SpringBootServletInitializer {
...
@override
protected StringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(GatewayApplication.class);
}
}
应用程序.yml
zuul:
routes:
freebeer:
path: "/beer/**"
url: "https://freedom.com:443"
default:
path: "/**"
url: "http://landing.com/"
当我使用嵌入式 Tomcat 运行独立应用程序时,它工作得非常好,例如: - 对http://localhost:8080/的请求很好地重定向到http://landing.com/ - 以及 ..:8080/beer 是很好地重定向到freedom.com
但是如果将 WAR 部署到 Tomcat - 没有任何效果: - 对 http(s)://tomcat.intranet.com:12345 的请求欢迎我并告知我没有任何内容并建议添加 Web 内容 - 对 http(s) 的请求://tomcat.intranet.com:12345/beer 给了我 404 消息,表明源服务器没有找到目标资源的当前表示,或者它不愿意透露存在的表示
看起来我错过了一些非常明显的东西。但是我已经没有耐心弄清楚并寻求帮助:)
解决方案
解决。请求被简单地发送到错误的上下文 - 到应用程序服务器根目录而不是特定于 Web 应用程序。我通过将战争命名为 ROOT.war 来解决它
推荐阅读
- css - CSS:背景线性渐变在Safari中显示为黑色
- angular - Ionic3 Facebook 登录问题
- laravel - Laravel 个人访问令牌
- angular - POST 有效负载上的 base64 图像为空 - Angular
- java - 尝试聚类标记谷歌地图时出现 NullPointerException
- javascript - JS 函数,只能被 new 关键字调用
- vbscript - VBScript 十进制除以整数返回额外的余数
- postman - 在 Postman 中使用变量设置 cookie
- sql - ORA-01422:- ORA-06512:
- laravel - Laravel request->all() 显示带有页面 url 的数组