Tomcat中的虚拟主机8

时间:2016-12-29 08:47:12

标签: java tomcat virtualhost tomcat8

我想将域mydomain.com映射到应用程序。我在<Host>中添加了server.xml条目,但是当我转到www.mydomain.com时,它会显示Tomcat起始页而不是我的应用程序。

server.xml中:

<Engine name="Catalina" defaultHost="localhost">

  <Realm className="org.apache.catalina.realm.LockOutRealm">
   <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
  </Realm>

  <Host name="localhost" autoDeploy="true" unpackWARs="true" appBase="webapps">
    <Valve className="org.apache.catalina.valves.AccessLogValve" pattern="%h %l %u %t "%r" %s %b" suffix=".txt" prefix="localhost_access_log" directory="logs"/>
  </Host>


  <Host name="mydomain.com" autoDeploy="true" unpackWARs="true" appBase="webapps">
    <Alias>www.mydomain.com</Alias>
    <Context privileged="true" debug="0" docBase="/opt/tomcat/webapps/MyDomain" path=""/>
    <Valve className="org.apache.catalina.valves.AccessLogValve" pattern="%h %l %u %t "%r" %s %b" suffix=".txt" prefix="localhost_access_log." directory="logs" resolveHosts="false"/>
  </Host>

</Engine>

提前致谢!

2 个答案:

答案 0 :(得分:3)

您已定义两个具有相同部署目录webapps

的主机

如果您希望localhostmydomain不同,请定义两个部署目录,并将根上下文战争重命名为ROOT.war。建议不要使用<Context代码

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

<Host name="www.mydomain.com" autoDeploy="true" unpackWARs="true" appBase="mydomain">
</Host>

您不需要alias,因为主机名包含域名。来自与www.domain.com不同的DNS条目的所有其他请求将由localhost

提供

如果localhostwww.domain.com相同,那么您只需<Host并部署ROOT.war

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

答案 1 :(得分:1)

对我来说有用的是在server.xml文件中映射我的应用程序。

删除您添加的主机条目,并在开头的主机条目中输入:

<Context path="/" docBase="yourApp">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

别忘了改变你的应用