अपाचे में डिफ़ॉल्ट दस्तावेज़ रूट को कैसे अक्षम करें?


13

मैं Apache Httpd पर चलने वाले अपने सर्वर पर कुछ वेबसाइटों की मेजबानी करता हूं। प्रत्येक वेबसाइट का अपना डोमेन या उप-डोमेन और वर्चुअल होस्ट होता है। इसलिए, मुझे कोई डिफ़ॉल्ट दस्तावेज़ रूट की आवश्यकता नहीं है। यह अक्षम करना संभव है DocumentRootमें /etc/httpd/conf/httpd.conf?

जवाबों:


10

अन्य उत्तर के लिए धन्यवाद। मैंने बिना किसी अनुमति के एक डिफ़ॉल्ट वर्चुअल होस्ट जोड़कर इसे हल किया। वैश्विक DocumentRootऔर ServerNameविकल्प वर्चुअल होस्ट में निर्दिष्ट लोगों से मेल खाना चाहिए।

/etc/httpd/conf/httpd.conf

...
ServerName <server-ip>:80

DocumentRoot "/var/www/html"

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>
...

/etc/httpd/conf.d/default.conf

<VirtualHost *:80>
        ServerName <server-ip>
        DocumentRoot /var/www/html
</VirtualHost>

इस तरह, मुझे एक 403 निषिद्ध संदेश मिलता है जब सर्वर को सीधे आईपी द्वारा एक्सेस किया जाता है, जो कि वास्तव में मैं चाहता था। यह बेहतर होगा अगर मुझे उसके /var/www/htmlलिए मौजूदा निर्देशिका की आवश्यकता नहीं होगी , लेकिन यदि मैं /dev/nullइसके बजाय कुछ निर्दिष्ट करता हूं तो अपाचे शिकायत करता है ।


6

मुझे यकीन नहीं है कि आप ऐसा करना चाहते हैं। यदि अपाचे डिफॉल्‍ट में कोई डिफॉल्ट vhost नहीं है, तो पहला डिफॉल्‍ट किया गया vhost डिफॉल्ट हो जाता है ।

तुम सब करने की ज़रूरत है डिफ़ॉल्ट एक खाली पृष्ठ की सेवा है।


6

हां और ना।

आप DocumentRootनिर्देश पर टिप्पणी कर सकते हैं या हटा सकते हैं , कोई समस्या नहीं। लेकिन यह बहुत कुछ हासिल नहीं करता है, क्योंकि तब यह डिफ़ॉल्ट निर्देशिका के लिए डिफ़ॉल्ट होगा PREFIX/htdocs/जहां आप Apache बनाते समय PREFIX सेट है।

जब आपके पास VirtualHosts सभी अनुरोधों को सेट करता है जो स्पष्ट रूप से कॉन्फ़िगर किए गए वर्चुअल होस्ट द्वारा डिफ़ॉल्ट वर्चुअलहोस्ट द्वारा नियंत्रित नहीं किए जाते हैं (जो आमतौर पर पहला है, लेकिन httpd -Sआपको बताएगा)।


1

एक्सटेंशन .confस्थित किसी भी अपाचे कॉन्फ़िगरेशन फ़ाइल /etc/httpd/conf.d/को अपाचे कॉन्फ़िगरेशन के हिस्से के रूप में शामिल किया जाएगा। इस प्रकार डिफ़ॉल्ट "वेलकम" पृष्ठ कॉन्फ़िगरेशन को अक्षम करने के लिए हमें इसके कॉन्फ़िगरेशन का नाम बदलने की आवश्यकता है/etc/httpd/conf.d/welcome.conf:

चरण एक कदम डिफ़ॉल्ट स्वागत फ़ाइल:

sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.backup 

स्टेप सेकंड रिबूट Appache2 सेवा

sudo systemctl restart httpd

0

यदि आपका सुनो निर्देश है, तो आपके /etc/httpd/conf/httpd.conf में

Listen 80

इसका मतलब है

*:80

आप एक जोड़े को परिभाषित किया है <listener>+ <servename>आपके /etc/httpd/conf/httpd.conf और /etc/httpd/conf.d/default.conf में जो एक ही कर रहे हैं: *:80+ <server-ip>। तो, अपाचे केवल एक को ध्यान में रखता है।

तो, आपका vhost config कोई उपयोग नहीं है।

आपका /etc/httpd/conf/httpd.conf आपके / var / www / html निर्देशिका तक पहुंच को अवरुद्ध करने के लिए पर्याप्त है।

बस जोड़ें:

<Directory /var/www/html>
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>

कृपया https://httpd.apache.org/docs/2.4/en/vhosts/name-based.html#alg पर पढ़ें :

कैसे सर्वर उचित नाम-आधारित वर्चुअल होस्ट का चयन करता है

यह पहचानना महत्वपूर्ण है कि नाम-आधारित वर्चुअल होस्ट रिज़ॉल्यूशन का पहला चरण आईपी-आधारित रिज़ॉल्यूशन है। नाम-आधारित वर्चुअल होस्ट रिज़ॉल्यूशन केवल उम्मीदवारों को सबसे अच्छा नाम-आधारित वर्चुअल होस्ट चुनता है, जो उम्मीदवारों को सर्वश्रेष्ठ आईपी-आधारित मैच तक सीमित करता है। VirtualHost निर्देशों के सभी में आईपी पते के लिए एक वाइल्डकार्ड (*) का उपयोग करना इस आईपी-आधारित मानचित्रण को अप्रासंगिक बनाता है।

जब कोई अनुरोध आता है, तो सर्वर आईपी पते और अनुरोध द्वारा उपयोग किए गए पोर्ट के आधार पर सबसे अच्छा (सबसे विशिष्ट) मिलान तर्क मिलेगा। यदि इस सर्वश्रेष्ठ-मिलान पते और पोर्ट संयोजन के साथ एक से अधिक वर्चुअल होस्ट हैं, तो Apache आगे अनुरोध में मौजूद सर्वर नाम से ServerName और ServerAlias ​​निर्देशों की तुलना करेगा।

यदि आप किसी भी नाम-आधारित वर्चुअल होस्ट से ServerName निर्देश को छोड़ देते हैं, तो सर्वर सिस्टम होस्टनाम से प्राप्त एक पूरी तरह से योग्य डोमेन नाम (FQDN) को डिफ़ॉल्ट कर देगा। यह अंतर्निहित सेट सर्वर नाम काउंटर-सहज वर्चुअल होस्ट मिलान के लिए नेतृत्व कर सकता है और हतोत्साहित किया जाता है।

IP और पोर्ट संयोजन के लिए डिफ़ॉल्ट नाम-आधारित vhost यदि कोई मेल नहीं मिलता है तो ServerName या ServerAlias ​​वर्चुअल मेजबानों के सेट में पाया जाता है जिसमें सबसे विशिष्ट मिलान आईपी पता और पोर्ट संयोजन होता है, फिर पहले सूचीबद्ध वर्चुअल होस्ट जो कि उपयोग किए जाएंगे।


0

बस डिफ़ॉल्ट पोर्ट बदलें:

Listen 80
Listen 8080 # any fake port

और VirtualHost में * .80 छोड़ दें

मेरे लिए Apache2 और Centos 7 के साथ काम करता है

अधिक उदाहरण आप प्रलेखन में पा सकते हैं । _Default_ variable पर एक नज़र डालें।


0

इस पृष्ठ को निष्क्रिय करने के लिए, हमें फ़ाइल /etc/httpd/conf.d/welcome.conf का नाम बदलकर कुछ और करना होगा या यदि आपको इसकी आवश्यकता नहीं है तो आप इसे हटा सकते हैं।

mv /etc/httpd/conf.d/welcome.conf/etc/httpd/conf.d/welcome.conf_backup

सुनिश्चित करें कि Apache कमांड के साथ पुनः आरंभ (रूट के रूप में) किया गया है:

systemctl httpd को पुनरारंभ करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.