我有一个名为 test.war 的应用程序。
由于在我的服务器上安装了 Apache,我必须为 Tomcat 应用程序使用另一个端口号,因此部署后可以在 domain.com:8080/test/访问此应用程序。
我决定创建一个子域,以便从 url 中删除丑陋的 8080,因此我将服务器设置为 described here .所以现在 test.domain.com 指的是 domain.com:8080/test/。
除了一个问题外,一切似乎都很好——因为我的应用程序不是 ROOT.war,而且我正在使用 spring:url
函数,应用程序中的每个 url 都被转换为/test/bla-bla。所以我删除了那个功能。但是 spring security 仍然存在问题,因为它仍然翻译相对于应用程序名称的 url,即/test/bla-bla。
我该如何解决这个问题?
谢谢
UPD:我不想将它部署为 ROOT 应用程序,因为我有两三个这样的应用程序,我想为每个应用程序创建一个子域
最佳答案
Spring Security 不会“翻译”URL。事实上,这并不是 Spring Security 特有的。任何进行重定向的应用程序都会遇到类似的问题。如果您想隐藏代理后面的应用程序的上下文路径,则需要在代理处重写 URL。
我建议您阅读 Tomcat Generic Proxy Howto尤其是关于 URL 重写的部分,因为它专门解决了这个问题。
关于java - Spring 安全 : using relative path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11876416/