0

我有一个名为 test.war 的应用程序。

由于我的服务器上安装了 Apache,我必须为 Tomcat 应用程序使用另一个端口号,因此在部署此应用程序后,该应用程序可在 domain.com:8080/test/ 获得。

我决定创建一个子域,以便从 url 中删除那个丑陋的 8080,所以我按照这里描述的方式设置了服务器。所以现在 test.domain.com 指的是 domain.com:8080/test/。

除了一个问题外,一切似乎都很好——因为我的应用程序不是 ROOT.war 并且我正在使用spring:url函数,应用程序中的每个 url 都被转换为 /test/bla-bla。所以我删除了那个功能。但是 spring security 仍然存在问题,因为它仍然会转换相对于应用程序名称的 url,即 /test/bla-bla。

我该如何解决这个问题?

谢谢

UPD:我不想将其部署为 ROOT 应用程序,因为我有两个或三个这样的应用程序,并且我想为每个应用程序创建一个子域

4

1 回答 1

1

Spring Security 不会“翻译” URL。事实上,这并不是 Spring Security 特有的。任何执行重定向的应用程序都会遇到类似的问题。如果要隐藏代理后面的应用程序的上下文路径,则需要重写代理处的 URL。

我建议您阅读 Tomcat Generic Proxy Howto和 URL 重写部分,因为它专门解决了这个问题。

于 2012-08-10T13:20:24.783 回答