2012-08-09 93 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