अपाचे निर्देशिका का निर्देश डॉक्यूमेंटरूट के सापेक्ष होना चाहिए या नहीं?


14

Apache Directoryनिर्देशन DocumentRoot के सापेक्ष होना चाहिए या नहीं? मैं एक VirtualHost के संदर्भ में पूछता हूं, लेकिन इससे कोई फर्क नहीं पड़ना चाहिए।

दूसरे शब्दों में, क्या यह माना जाता है:

<VirtualHost>
    DocumentRoot /var/www
    <Directory /var/www>
    ...

या

<VirtualHost>
    DocumentRoot /var/www
    <Directory />
    ...

दोनों कार्य। अपाचे निर्देशिका डॉक्स कहते हैं:

निर्देशिका-पथ या तो निर्देशिका का पूर्ण पथ है, या वाइल्ड-कार्ड स्ट्रिंग ...

... लेकिन फिर उन्होंने "पूर्ण मार्ग" कथन के विपरीत दो उदाहरण दिखाए।

ED: अनुवर्ती प्रदर्शन ट्यूनिंग पृष्ठ पर FollowSymLinks और SymLinksIfOwnerMatch और AllowOverride अनुभागों में विरोधाभासी उदाहरण भी हैं ।

मज़े के लिए मैंने डेबियन के डिफ़ॉल्ट vhost सेटअप को देखा और यह पाया:

<VirtualHost *:80>
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    ...

जवाबों:


9

प्रलेखन सही है, और <Directory>निर्देश पूर्ण पथ होना चाहिए ।

आपका पहला उदाहरण यह है कि आपको VirtualHosts के लिए निर्देश कैसे कॉन्फ़िगर करना चाहिए, और निर्देश के भीतर विकल्पों को सिर्फ a पर लागू करता है DocumentRoot। आपका दूसरा उदाहरण फाइलसिस्टम रूट (शाब्दिक /) का जिक्र है ।

आपने शेष निर्देश को पोस्ट नहीं किया है, लेकिन इसका उपयोग आमतौर पर अपाचे को जेल करने और इसके उपयोग को प्रतिबंधित करने के प्रयास के रूप में किया जाता है, और आमतौर पर ( apache2.confया हमेशा नहीं) मुख्य या httpd.confकॉन्फ़िगरेशन फ़ाइलों के अंदर रखा जाता है , आपके वर्चुअल्स के साथ स्पष्ट रूप से अनुमति देता है अपनी स्वयं की DocumentRootनिर्देशिकाओं के लिए पहुंच , इसलिए दोनों को अक्सर एक साथ उपयोग किया जाता है।

से अपाचे प्रलेखन :

ध्यान दें कि <निर्देशिका /> के लिए डिफ़ॉल्ट पहुंच सभी पहुंच की अनुमति है। इसका मतलब है कि अपाचे httpd एक URL से मैप की गई किसी भी फ़ाइल की सेवा करेगा। यह अनुशंसा की जाती है कि आप इसे किसी ब्लॉक के साथ बदलें जैसे:
    <निर्देशिका />
      सभी से इनकार करने की आवश्यकता है
    </ निर्देशिका>
और फिर इसे उन निर्देशिकाओं के लिए ओवरराइड करें जिन्हें आप एक्सेस करना चाहते हैं। देखें सुरक्षा युक्तियों अधिक जानकारी के लिए पेज।

यदि दूसरा उदाहरण शाब्दिक रूप से फाइलसिस्टम को संदर्भित करता है /, तो अपाचे /var/wwwनिर्देशिका की सेवा क्यों करता है ?
जेफ

1
अपाचे में काम करेगा DocumentRootDirectoryनिर्देश पूरी तरह से अलग है, और कहा, "इस निर्देशिका और सभी उप निर्देशिकाओं पर संलग्न विन्यास लागू करें" का प्रभाव पड़ता है। अधिक विशिष्ट कॉन्फ़िगरेशन प्राथमिकता लेते हैं, इसलिए <Directory /var/www/>ओवरराइड करेंगे <Directory />
क्रेग वॉटसन

समझा। तो <Directory />एक VirtualHost संदर्भ से सर्वर चौड़ा विकल्प (या अन्य सेटिंग) की ओवरराइड कर सकते हैं <Directory />? यह समझ आता है। सहायता के लिए धन्यवाद।
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.