2013-05-29 50 views
1

當前,我的基於Spring MVC的應用程序在域的根上下文上運行,例如, https://mydomain.com。實際上,默認情況下,任何請求都將被重定向到https://mydomain.com/login。現在我想讓應用程序處理一個額外的子域,例如https://member.mydomain.com具有多個域的Spring MVC

我的問題:

  1. 我怎麼告訴我的Spring應用程序來處理這兩個領域,並區分基於域的要求?
  2. 如何設置子域?我在Windows 2008服務器上使用Tomcat 7。

回答

3

由於你的webapp似乎是唯一一個安裝在你的tomcat中的,所以我認爲這將是你tomcat中的ROOT webapp。目前爲止,所有請求都會傳送給它。

對於多域的事情,我會建議使用一個額外的網絡服務器(例如Apache)。該webserver將在你的tomcat之前,並因此接收所有的請求。在這個Apache中,你可以創建一個virtual host(用於mydomain.com)和多個別名(member.mydomain.com,mydomain.co.uk等等)...

使用Apache可以讓你做一些漂亮的東西像request rewriting

然後請求將通過ajp protocol轉發到tomcat到tomcat。

0

從Tomcat 7文檔(主機容器):
http://tomcat.apache.org/tomcat-7.0-doc/config/host.html

簡介:主機元素表示虛擬主機,這是一個網絡名稱的用於服務器的關聯(如「WWW。 mycompany.com「與運行Tomcat的特定服務器進行通信[...]一個或多個主機元素嵌套在Engine元素中。在Host元素內部,可以爲與此虛擬主機關聯的Web應用程序嵌套Context元素。

常見屬性:
appBase(此虛擬主機的應用程序基目錄。這是可能包含Web應用程序被該虛擬主機上部署的目錄的路徑名。)
(通常這個虛擬主機的網絡名稱,註冊域名服務的服務器。)

通常,大多數用戶在tomcat server.xml config中只有一個主機容器,默認名稱爲「localhost」。可以在Apache HTTP級別實現多域支持,其中apache通過mod_jk或mod_proxy向tomcat傳遞請求(取決於安裝和sysadmin首選項)。它有缺點和優點。首先,無論主機名或子域名如何,所有請求都會在同一個地方結束,即您的tomcat單個主機容器 - >應用程序,以便您的應用程序必須檢測要向客戶端提供的內容。如果您希望爲多個域提供相同內容,則不會出現問題,但是如果您計劃爲每個單獨的域或子域部署不同的應用程序,那麼Tomcat的主機容器配置就是您需要正確執行的操作。