簡體   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