繁体   English   中英

Tomcat虚拟主机配置混乱

[英]Tomcat Virtual Host configuration confusion

我正在将第一个Groovy / Grails应用程序部署到Tomcat 6服务器上,并且在尝试在Tomcat上配置虚拟主机时遇到了一些混乱。 我运行Grails随附的Tomcat的部署脚本,它将WAR文件复制到webapps文件夹下的Tomcat服务器,并解压缩(或者我不确定Tomcat是否这样做)。 所以我有以下几点:

C:\Program Files\Tomcat\webapps\myapp.WAR
C:\Program Files\Tomcat\webapps\myapp\{all files from the WAR}

通过使用服务器的DNS名称,我可以毫无问题地访问此文件:

http://server.dns.com/myapp/

但是,在尝试为此创建虚拟主机时遇到了问题。 我已经在server.xml文件中添加了以下几行:

<Host name="www.fancynewdomainname.com" appBase="webapps/myapp"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
</Host>

但我得到的只是空白页。

我曾尝试使用Google搜索此问题,但阅读的内容越多,我就会感到困惑。

PS作为一个旁注,我注意到在将此虚拟主机添加到server.xml文件后,我还具有以下文件夹:

C:\Progrma Files\Tomcat\work\Catalina\www.fancynewdomainname.com\

但是它似乎主要是空的,里面只有几个空文件夹,它们模仿WAR文件中的文件夹。

尝试从appBase属性中删除上下文名称,例如appBase="webapps"

编辑:

如果我正确理解您要实现的目标,那么我认为您需要为每个虚拟主机定义一个单独的appBase,例如:

<Host name="www.somedomainname.com" appBase="webapps" ...
<Host name="www.fancynewdomainname.com" appBase="webapps2" ...

然后在每个appBase中,将主Web应用程序重命名为“ ROOT.war”(这样就可以在没有上下文名称的情况下访问它)。

将原始的server.xml行更改为以下内容似乎可以使工作正常:

<Host name="www.fancynewdomainname.com" appBase="webapps"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
  <Context path="" docBase="myapp"/>
</Host>

基本上,我将appBase更改为“ webapps”,并添加了包含Context定义的行,该定义实际指向webapps下的正确应用程序。

在Grails Config.groovy中,您可以通过添加以下内容来更改上下文:

grails.app.context =“ $ {appName} -helloworld”

顺便说一下,是Tomcat揭开了战局。 将unpackWARs设置为false可以阻止这种情况的发生。

解决此问题的另一种方法是将Apache HTTP服务器置于此服务器的前面,然后代理到您的Tomcat服务器。 这也提供了额外的保护层。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM