2012-08-09 68 views
0

我有名字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。所以我删除了这个功能。但仍然存在弹簧安全问题,因为它仍然会将应用程序名称相对于应用程序名称(即/ test/bla-bla)进行翻译。

我怎样才能解决这个问题?

谢谢

UPD:我不想把它部署为根应用程序,因为我有两个或三个这样的应用程序,我想为他们创造的每一个

回答

1

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

我建议你阅读的Tomcat Generic Proxy Howto,特别是在重写URL的部分,因为它专门解决这个问题。

+0

谢谢您的答复。我知道我可以通过Tomcat代理请求,但如果我有几个应用程序呢?其中一个我可以重定向(通过代理)到服务器的根目录。另一个将在重定向期间仍然使用上下文路径。因此,正如我理解ONY的解决方案是使用Tomcat – nKognito 2012-08-11 03:03:25

+0

的两个实例不,不应该有任何需要使用Tomcat的多个实例。重写规则没有与tomcat实例连接,应用程序应该不知道它们在代理之后运行。重写规则是apache代理配置的一部分。 – 2012-08-11 19:02:24

+0

你能指定一下你的意思吗?我使用了代理,解决了子域重定向问题。但是,我的应用程序仍然会将应用程序名称添加到我用spring描述的任何url:url标记 – nKognito 2012-12-01 17:24:23