apache - 当配置 Server.xml 将另一个域指向一个不是 webapps 文件夹中 ROOT 文件夹的文件夹时,我做错了什么吗?

标签 apache tomcat webserver

好的,我有一个从 Godaddy 购买的主域:mainDM.com(这是名为 mainDM 的应用程序的域)。我还买了一台Godaddy Win2000 VPS,IP地址是xxx.xx.xx.xx

在 Godaddy 中,我将该域指向 xxx.xx.xx.xx

在 Tomcat 服务器中,在 webapps 文件夹中,有一个 ROOT 文件夹,我将 mainDM 应用程序的所有 html 文件放入 ROOT 文件夹中.一切正常。那就是当我打开 mainDM.com 时,我可以看到我的应用运行正常。

现在,我开发了另一个名为 otherDM 的应用程序,我还在 Godaddy 购买了一个域名 otherDM.com 并且我也将它指向了 xxx.xx.xx .xx。现在,当打开 otherDM.com 时,我看不到 otherDM 应用程序,而是看到 mainDM 应用程序。所以我想配置 server.xml 以便当我打开 otherDM.com 时,它会显示 otherDM 网络应用程序。 注意:webapps 文件夹中有一个otherDM 文件夹,其中包含otherDM 应用程序的所有html 文件。

这是我在 server.xml 中所做的,但没有任何反应。

<?xml version='1.0' encoding='utf-8'?>

<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="8005" shutdown="SHUTDOWN">
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
  <Listener className="org.apache.catalina.core.JasperListener" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->


    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 8080
    -->
    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!-- A "Connector" using the shared thread pool-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    <!-- Define a SSL HTTP/1.1 Connector on port 8443
         This connector uses the BIO implementation that requires the JSSE
         style configuration. When using the APR/native implementation, the
         OpenSSL style configuration is required as described in the APR/native
         documentation -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />


    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host).
         Documentation at /docs/config/engine.html -->

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <Engine name="Catalina" defaultHost="localhost">

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->

      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- 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
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
      <Host name="otherDM.com" appbase="otherDM" autoDeploy="true" unpackWARs="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="otherDM_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

我确实重启了我的 Tomcat 服务器,但没有任何反应,每次我打开 otherDM.com 然后它会显示 mainDM 应用程序。但是,如果我打开 otherDM.com/otherDM 或打开 mainDM.com/otherDM 然后我可以看到 otherDM 应用程序。

我做错了什么吗?如何修复?

最佳答案

“host”标签的“appbase”属性指向 CATALINA_HOME 下的目录(如果是相对的,如您的情况)。所以只需像这样创建两个文件夹:

[CATALINA_HOME]/mainDomain
[CATALINA_HOME]/otherDomain

并在其中创建两个 ROOT 文件夹。将您的应用程序复制到 ROOT 目录中。

然后将appbase设置为:

 <Host name="localhost"  appBase="mainDomain" ...
 <Host name="mainDomain.com"  appBase="mainDomain" ...
 <Host name="otherDomain.com"  appBase="otherDomain" ...

关于apache - 当配置 Server.xml 将另一个域指向一个不是 webapps 文件夹中 ROOT 文件夹的文件夹时,我做错了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220255/

相关文章:

支持 CGI 的 Node.JS 网络服务器(开源)

c - 在 C 中发送 HTTP Post 请求

PHP - 将 HTTPS 重定向到 HTTP - 无限循环

java - tomcat是如何解析资源的?

tomcat - fatal error sun.security.validator PKIX 路径构建失败

mysql - tomcat7、hibernate 4、struts 2,再次找不到合适的驱动程序

node.js - Socket.IO 超出最大调用堆栈大小

ssl - 在 GCP 上使用 NaviServer 配置堡垒主机?

apache - HTTPS 仅在本地主机上而不在域上

php - 为什么在这种情况下使用 RewriteCond 和 RewriteRule 重定向会失败?