1

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

我的问题:

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

2 回答 2

3

由于您的 webapp 似乎是您的 tomcat 中唯一安装的一个,我假设它将是您在 tomcat 中的 ROOT webapp。到目前为止这很好,所有请求都将传递给它。

对于多域的事情,我建议使用额外的网络服务器(例如Apache)。该网络服务器将在您的 tomcat 前面,因此接收所有请求。在这个 apache 中,您可以创建一个虚拟主机(用于 mydomain.com)和多个别名(member.mydomain.com、mydomain.co.uk 等)...

使用 Apache 可以让你做一些不错的事情,比如请求重写

然后请求将通过ajp 协议转发到 tomcat到 tomcat。

于 2013-05-29T07:00:01.433 回答
0

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

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

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

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

于 2013-05-29T10:08:12.540 回答