2011-03-07 15 views
12

Çoğu kamuya açık olan çeşitli web uygulamalarına hizmet vermek için Tomcat 6'yı çalıştırıyorum. Ancak, yalnızca localhost'tan bağlantı sağlayan erişimini sadece bir webapp ile kısıtlamak istiyorum.Tomcat: Sadece/tek bir/localapp için localhost erişimini kısıtla

Ama üzerinde erişimi kısıtlamak için nasıl bilemiyorum: anlatıldığı gibi

Ben context.xml bir supap kullanan tüm webapps için erişimi kısıtlayabilir uygulama başına bir temel. Uygulamamın web.xml'i ile bunu yapmanın bir yolu var mı? Veya context.xml dosyasına ek kurallar ekleyerek?

sayesinde

-B


kapakları yenilenmesi Çözüm:

$ 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

Bir Bağlam "tek uygulama" IS. Her bir savaş kendi bağlamıdır. Uygulamanın hangi tanımını kullanıyorsunuz? –

cevap

9

Sen uygulamanın sizin için ayrı bir context.xml oluşturabilir.

Bu bağlam konfigurasyonu Tomcat'in dokümanından bir bölüm: Bağlam elemanlarının açık bir şekilde tarif edilebilir: Bağlam eleman bilgi her webapps tarafından yüklenecek: $CATALINA_HOME/conf/context.xml dosyasında

  • . $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default dosyasında: İçerik öğesi bilgileri, bu ana bilgisayarın tüm webapları tarafından yüklenir.
  • $CATALINA_HOME/conf/[enginename]/[hostname]/ dizinindeki tek tek dosyalarda (.xml uzantısıyla). Dosya adı (daha az .xml) uzantı, bağlam yolu olarak kullanılacaktır. Çok seviyeli bağlam yolları, #, ör. /foo/bar bağlam yolu için foo#bar.xml. Varsayılan web uygulaması, ROOT.xml adı verilen bir dosya kullanılarak tanımlanabilir.
  • Yalnızca $CATALINA_HOME/conf/[enginename]/[hostname]/ numaralı uygulamada bir bağlam dosyası yoksa; Uygulama dosyalarının içinde /META-INF/context.xml adresindeki tek bir dosyada. Web uygulaması bir SAVAŞ olarak paketlendiyse, /META-INF/context.xml, $CATALINA_HOME/conf/[enginename]/[hostname]/'a kopyalanacak ve uygulamanın içerik yoluna uyacak şekilde yeniden adlandırılacaktır. Bu dosya mevcut olduğunda, daha yeni bir /META-INF/context.xml ile yeni bir SAVAŞ ev sahibinin appBase alanına yerleştirilirse değiştirilmez. Benim için
1

İzin Verme localhost. Bunun yerine RemoteAddrValve kullanıyorum. Bazı sistemlerin IPv4 adreslerini kullandığını (filtrenizin 127.0.0.1 eşleşmesi gerekir), diğerleri ise IPv6 adreslerini kullandığını unutmayın (tam adresi eşleştirin, ::1 gibi kısaltılmış notasyonlarla eşleştirmeyin). noktalar kaçan gerekir böylece

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

nitelik allow, regexpi sürer. explained by Dmitry Negoda olarak, bu /META-INF/context.xml içinde gider.

0

Şu yolu takip etme: C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ conf \ Catalina \ localhost \

Bu yol altında "manager.xml" dosyasını bulabilirsiniz. Aşağıdaki içeriğe sahip

Edit "manager.xml" dosyası:

<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"/> 
    --> 

** * ** * kaydetmek ve çalıştırmak sunucusu. ... anladın. NOT: 127.0.0.1 SİSTEMİNİZİN IP 10.100.1.2 -Bu ANLAMI DOSTUNDUR