2011-03-07 63 views
12

我正在運行Tomcat 6來爲幾個Web應用程序提供服務,其中大部分都是面向公衆的。但我想限制訪問只有一個 web應用程序,只允許從本地主機連接。Tomcat:限制訪問本地主機的/只有一個/ webapp

但我不能想出如何在限制訪問:

在描述我可以限制使用context.xml中的閥門,所有 web應用訪問每個應用的基礎。有沒有辦法與我的應用程序的web.xml做到這一點?或者通過向context.xml添加其他規則?

感謝,

-B


重述解決方法:

$ cp /var/lib/tomcat6/conf/context.xml \ 
    /var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml 

$ cat /var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml 

<Context> 
    <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="localhost"/> 
... {as previously} ... 
</Context> 
+0

上下文是一個「單一的應用程序」。每個WAR都是它自己的上下文。你使用的是什麼定義的應用程序? – 2011-03-07 19:19:36

回答

9

您可以爲應用程序創建一個單獨的context.xml。

這是從Tomcat文檔上下文configuraion的摘錄: 上下文元素可被明確定義:

  • $CATALINA_HOME/conf/context.xml文件:上下文元素信息將被所有web應用被加載。 在$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default文件中:上下文元素信息將被該主機的所有webapp加載。
  • $CATALINA_HOME/conf/[enginename]/[hostname]/目錄中的單個文件(擴展名爲.xml)中。該文件的名稱(少於.xml)擴展名將用作上下文路徑。多級上下文路徑可以使用例如#來定義,例如, foo#bar.xml,上下文路徑爲/foo/bar。可以使用名爲ROOT.xml的文件來定義默認的Web應用程序。
  • 僅當$CATALINA_HOME/conf/[enginename]/[hostname]/中的應用程序不存在上下文文件時;在應用程序文件中的/META-INF/context.xml的單個文件中。如果Web應用程序打包爲WAR,則/META-INF/context.xml將被複制到$CATALINA_HOME/conf/[enginename]/[hostname]/並重命名以匹配應用程序的上下文路徑。一旦這個文件存在,如果在主機的appBase中放置了一個新的更新的/META-INF/context.xml的WAR,它將不會被替換。
1

允許localhost不適用於我。我用RemoteAddrValve代替。請記住,有些系統使用的IPv4地址(你的過濾器,以匹配匹配127.0.0.1),而其他使用IPv6地址(匹配的完整地址,如::1不是縮寫符號)。

<Context> 
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
      allow="0:0:0:0:0:0:0:1,127\.0\.0\.1" /> 
</Context> 

屬性allow需要一個正則表達式,所以點需要進行轉義。由於explained by Dmitry Negoda,這在/META-INF/context.xml

0

轉到以下路徑:C:\ Program Files文件\ Apache軟件基金會\ Tomcat的6。0 \ conf \ Catalina \ localhost \

在此路徑下,您會找到「manager.xml」文件。

編輯 「manager.xml」 文件中,內容如下:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" 
    allow="127.0.0.1,10.100.1.2"/> 

    <!-- Link to the user database we will get roles from 
    <ResourceLink name="users" global="UserDatabase" 
    type="org.apache.catalina.UserDatabase"/> 
    --> 

** * ** *保存和運行服務器。 ...你說對了。 注意:127.0.0.1表示您的系統IP 10.100.1.2 - 這是您的朋友

相關問題