如果您使用的是代理服务器(Apache httpd),那么 Tomcat 并不关心您的配置是什么样的:如果您愿意,您可以在相同的主机名(或多个主机名)上提供所有 Web 应用程序。在这种情况下,为多个虚拟主机配置 httpd,然后将您想要的任何 URL 空间映射到 Tomcat。
但是,如果您想分离您的 webapps 以便(比如说)一个可用,www.0signals.com
另一个可用(但不能同时使用),那么您将不得不在 Tomcatuploads.0signals.com
中创建多个,如下所示:<Host>
server.xml
<Host name="localhost" appbase="webapps">
...
</Host>
<Host name="uploads.0signals.com" appbase="uploads">
...
</Host>
我将默认的“localhost”留<Host>
在了那里,但没有特别标识它,www.0signals.com
因为它应该是默认的<Host>
,并且得到任何与定义的任何其他主机都不匹配的东西。
这些appbase
值是相对于 Tomcat 的CATALINA_BASE
,它本质上是您现有目录所在位置的父目录webapps
。如果您想完全限定appbase
,欢迎您这样做。
一旦你分别在和目录中拥有你的ROOT
目录(或ROOT.war
文件),你应该很高兴。除非您要配置 SSL,否则为两个主机名使用相同的 IP 地址应该不是问题,在这种情况下,您可能很难使用仅匹配单个域的 SSL 证书。有一些方法可以解决这个问题,但它们与您的问题无关。webapps
uploads
更新哦,还有一件事:在这种情况下没有特别的理由使用 Apache httpd。您是否需要eatj
在前面使用 httpd?上面的配置在没有 httpd 的情况下可以正常工作。如果您打算将所有流量代理到 Tomcat,那么根本没有理由安装 Apache httpd。
2012-06-29 更新有几件事:
您的 DNS 不是您的问题(至少现在不是):
$ host www.0signals.com www.0signals.com 有地址 69.46.75.150 $ host uploads.0signals.com uploads.0signals.com 有地址 69.46.75.150
当联系每一个www.0signals.com
和uploads.0signals.com
时,我从两个不同的服务器得到响应:www.0signals.com
响应(即 Tomcat)的Server
标头,而另一个响应(即 Apache httpd)。如果您使用 Apache httpd 来处理所有请求,那么您在for . 请记住,mod_jk 和 mod_proxy_* 都不会将您的指令从一个虚拟主机复制到另一个虚拟主机:您必须手动完成。Apache -Coyote/1.1
Apache/2.0.63
JkMount
ProxyPass
ProxyPassReverse
VirtualHost
uploads.0signals.com