जवाबों:
अन्य उत्तर के लिए धन्यवाद। मैंने बिना किसी अनुमति के एक डिफ़ॉल्ट वर्चुअल होस्ट जोड़कर इसे हल किया। वैश्विक 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
इसके बजाय कुछ निर्दिष्ट करता हूं तो अपाचे शिकायत करता है ।
हां और ना।
आप DocumentRoot
निर्देश पर टिप्पणी कर सकते हैं या हटा सकते हैं , कोई समस्या नहीं। लेकिन यह बहुत कुछ हासिल नहीं करता है, क्योंकि तब यह डिफ़ॉल्ट निर्देशिका के लिए डिफ़ॉल्ट होगा PREFIX/htdocs/
जहां आप Apache बनाते समय PREFIX सेट है।
जब आपके पास VirtualHosts सभी अनुरोधों को सेट करता है जो स्पष्ट रूप से कॉन्फ़िगर किए गए वर्चुअल होस्ट द्वारा डिफ़ॉल्ट वर्चुअलहोस्ट द्वारा नियंत्रित नहीं किए जाते हैं (जो आमतौर पर पहला है, लेकिन httpd -S
आपको बताएगा)।
एक्सटेंशन .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
यदि आपका सुनो निर्देश है, तो आपके /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 वर्चुअल मेजबानों के सेट में पाया जाता है जिसमें सबसे विशिष्ट मिलान आईपी पता और पोर्ट संयोजन होता है, फिर पहले सूचीबद्ध वर्चुअल होस्ट जो कि उपयोग किए जाएंगे।
बस डिफ़ॉल्ट पोर्ट बदलें:
Listen 80
Listen 8080 # any fake port
और VirtualHost में * .80 छोड़ दें
मेरे लिए Apache2 और Centos 7 के साथ काम करता है
अधिक उदाहरण आप प्रलेखन में पा सकते हैं । _Default_ variable पर एक नज़र डालें।
इस पृष्ठ को निष्क्रिय करने के लिए, हमें फ़ाइल /etc/httpd/conf.d/welcome.conf का नाम बदलकर कुछ और करना होगा या यदि आपको इसकी आवश्यकता नहीं है तो आप इसे हटा सकते हैं।
mv /etc/httpd/conf.d/welcome.conf/etc/httpd/conf.d/welcome.conf_backup
सुनिश्चित करें कि Apache कमांड के साथ पुनः आरंभ (रूट के रूप में) किया गया है:
systemctl httpd को पुनरारंभ करें