具有多个域的Spring MVC

时间:2013-05-29 06:50:05

标签: tomcat spring-mvc

目前,我的基于Spring MVC的应用程序在域的根上下文中运行,例如https://mydomain.com。实际上,默认情况下,任何请求都将重定向到https://mydomain.com/login。现在我希望应用程序处理一个额外的子域,例如https://member.mydomain.com

我的问题:

  1. 如何告诉我的Spring应用程序处理这两个域并根据域区分请求?
  2. 如何设置子域名?我在Windows 2008服务器上使用Tomcat 7。

2 个答案:

答案 0 :(得分:3)

由于您的webapp似乎是tomcat中安装的唯一一个,我认为它将是您在tomcat中的ROOT webapp。到目前为止一切正常,所有请求都将发送给它。

对于多域事物,我建议使用额外的网络服务器(例如Apache)。该网络服务器将位于您的tomcat前面,因此会收到所有请求。在这个apache中你可以创建一个virtual host(对于mydomain.com)和几个别名(member.mydomain.com,mydomain.co.uk等)......

使用Apache可以让你做一些很好的事情,比如request rewriting

然后,请求将通过ajp protocol转发到tomcat到tomcat。

答案 1 :(得分:0)

来自Tomcat 7文档(主机容器):
http://tomcat.apache.org/tomcat-7.0-doc/config/host.html

  

简介:Host元素表示虚拟主机,它是服务器的网络名称(例如“www.mycompany.com”与运行Tomcat的特定服务器的关联。[...] One或更多主机元素嵌套在Engine元素内。在Host元素内,您可以为与此虚拟主机关联的Web应用程序嵌套Context元素。

     

共同属性:
   appBase (此虚拟主机的Application Base目录。这是可能包含要在此虚拟主机上部署的Web应用程序的目录的路径名。)
  名称(通常是在您的域名服务服务器中注册的此虚拟主机的网络名称。)

通常,大多数用户在tomcat server.xml config中只设置了一个主机容器,默认名称为“localhost”。可以在Apache HTTP级别实现多域支持,其中apache通过mod_jk或mod_proxy将请求传递给tomcat(取决于setup和sysadmin首选项)。它有利弊和优点。首先,无论主机名或子域名如何,所有请求都在同一个地方结束,即您的tomcat单主机容器 - >应用程序,以便您的应用程序必须检测为客户端提供什么。如果您希望为多个域提供相同的内容,则没有问题,但如果您计划为每个单独的域或子域部署不同的应用程序,则需要正确执行Tomcat的主机容器配置。