[英]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.