如何在Apache中使用eatj主机配置子域?

时间:2012-06-16 14:11:21

标签: java apache tomcat dns

我有一个域名(www.0signals.com),想要创建一个子域名,比如uploads.0signals.com如何配置httpd.conf和其他文件?我应该在哪里创建文件夹uploads?我是否需要创建任何其他文件夹来支持子域名?

我正在使用eatj和java作为核心语言的预先计划。我的目录结构如下所示:

  • 配置
  • LIB
  • 的webapps / ROOT
  • 上传/ ROOT

我不确定我做错了什么。我在DNS中更新了区域,子域/域都指向同一个IP。我认为我在配置文件上做错了或者在错误的位置创建了文件夹。

2 个答案:

答案 0 :(得分:0)

如果您使用的是代理服务器(Apache httpd),那么Tomcat并不关心您的配置:您可以根据需要在同一主机名(或主机名)上提供所有Web应用程序。在这种情况下,为多个VirtualHost配置httpd,然后将所需的任何URL空间映射到Tomcat。

但是,如果您要分离您的网络应用程序,以便(比方说)www.0signals.com上有一个可用,而uploads.0signals.com上有另一个可用(但不是两者),那么您将不得不在Tomcat的<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的资格,欢迎您这样做。

分别在ROOTROOT.war目录中有webapps个目录(或uploads个文件)后,您应该好好去。除非您要配置SSL,否则对两个主机名使用相同的IP地址应该不是问题,在这种情况下,您可能会遇到仅与单个域匹配的SSL证书有困难。有办法解决这个问题,但它们与你的问题无关。

更新 哦,还有一件事:在这种情况下没有特别的理由使用Apache httpd。你需要eatj使用httpd吗?上面的配置在没有httpd的情况下工作得很好。如果您打算将所有流量代理到Tomcat,那么就没有理由安装Apache httpd。

更新2012-06-29 以下几点:

  1. 您的DNS不是您的问题(至少现在不是):

    $ host www.0signals.com www.0signals.com的地址为69.46.75.150 $ host uploads.0signals.com uploads.0signals.com的地址为69.46.75.150

  2. 联系www.0signals.comuploads.0signals.com时,我会收到来自两个不同服务器的回复:www.0signals.com回复Server标题Apache -Coyote/1.1 (那是Tomcat)而另一个用Apache/2.0.63响应(那是Apache httpd)。如果您使用Apache httpd处理所有请求,那么您缺少一些JkMount(如果您使用的是mod_jk)或ProxyPass / ProxyPassReverse(如果您在VirtualHost uploads.0signals.com中使用mod_proxy_ *)。请记住,mod_jk和mod_proxy_ *都不会将您的指令从一个VirtualHost复制到另一个:您必须手动执行。

答案 1 :(得分:0)

<Host appBase="uploads" autoDeploy="true" name="uploads.0signals.com" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->

      </Host>