2011-03-07 20 views
12

मैं कई वेब ऐप्स की सेवा के लिए टॉमकैट 6 चला रहा हूं, जिनमें से अधिकांश सार्वजनिक-सामना कर रहे हैं। लेकिन मैं तक केवल एक वेबपैप तक पहुंच प्रतिबंधित करना चाहता हूं, केवल स्थानीयहोस्ट से कनेक्शन की इजाजत देता हूं।टॉमकैट: स्थानीयहोस्ट तक पहुंच/केवल एक/वेबएप

लेकिन मैं समझ नहीं कैसे पर पहुंच को सीमित करना:

मैं में वर्णित के रूप context.xml में एक वाल्व, का उपयोग कर सभी webapps के लिए उपयोग को सीमित कर सकते हैं एक प्रति-ऐप आधार। क्या मेरे ऐप के web.xml के साथ ऐसा करने का कोई तरीका है? या context.xml में अतिरिक्त नियम जोड़कर?

धन्यवाद,

-B


recapping समाधान:

$ 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

एक संदर्भ एक "एकल ऐप" है। प्रत्येक युद्ध यह स्वयं का संदर्भ है। आप किस ऐप का उपयोग कर रहे हैं? –

उत्तर

9

आप एप्लिकेशन आपके लिए एक व्यक्ति context.xml बना सकते हैं।

इस संदर्भ कॉन्फ़िगरेशन पर बिलाव दस्तावेज़ से एक अंश है: प्रसंग तत्वों को स्पष्ट रूप से परिभाषित किया जा सकता है:

  • $CATALINA_HOME/conf/context.xml फ़ाइल में: प्रसंग तत्व जानकारी सभी webapps द्वारा लोड किया जाएगा। $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default फ़ाइल में: संदर्भ तत्व जानकारी उस होस्ट के सभी वेबपृष्ठों द्वारा लोड की जाएगी।
  • $CATALINA_HOME/conf/[enginename]/[hostname]/ निर्देशिका में व्यक्तिगत फ़ाइलों (.xml एक्सटेंशन के साथ) में। फ़ाइल का नाम (.xml कम) एक्सटेंशन संदर्भ पथ के रूप में उपयोग किया जाएगा। बहु-स्तर संदर्भ पथ # का उपयोग करके परिभाषित किया जा सकता है, उदा। /foo/bar के संदर्भ पथ के लिए foo#bar.xml। डिफ़ॉल्ट वेब एप्लिकेशन को ROOT.xml नामक फ़ाइल का उपयोग करके परिभाषित किया जा सकता है।
  • केवल तभी जब $CATALINA_HOME/conf/[enginename]/[hostname]/ में एप्लिकेशन के लिए कोई संदर्भ फ़ाइल मौजूद नहीं है; एप्लिकेशन फ़ाइलों के अंदर /META-INF/context.xml पर एक व्यक्तिगत फ़ाइल में। यदि वेब एप्लिकेशन को WAR के रूप में पैक किया गया है तो /META-INF/context.xml को $CATALINA_HOME/conf/[enginename]/[hostname]/ पर कॉपी किया जाएगा और इसका नाम बदलकर एप्लिकेशन के संदर्भ पथ से मेल किया जाएगा। एक बार यह फ़ाइल मौजूद हो जाने पर, इसे प्रतिस्थापित नहीं किया जाएगा यदि किसी नए /META-INF/context.xml के साथ एक नया WAR होस्ट के ऐपबेस में रखा गया है।
1

localhost को अनुमति देने के लिए मेरे लिए काम नहीं किया। मैं इसके बजाय RemoteAddrValve का उपयोग करता हूं। ध्यान रखें कि कुछ सिस्टम आईपीवी 4 पते का उपयोग करते हैं (आपका फ़िल्टर मैच 127.0.0.1 से मेल खाता है) जबकि अन्य आईपीवी 6 पते का उपयोग करते हैं (पूरा पता मिलान करें, ::1 जैसी संक्षिप्त टिप्पणियां नहीं)।

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

विशेषता allow, एक regexp लेता है तो डॉट्स भाग निकले जाने की जरूरत है। explained by Dmitry Negoda के रूप में, यह /META-INF/context.xml में जाता है।

0

गोटो निम्नलिखित पथ: सी: \ प्रोग्राम फ़ाइलें \ अपाचे सॉफ्टवेयर फाउंडेशन \ टोमकैट 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 आपके सिस्टम का मतलब है आईपी 10.100.1.2- यह आपके मित्र है

संबंधित मुद्दे