> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
मैं क्रोम के 93.184.216.34
बजाय टाइप करता हूं http://example.com
। यह वेबसाइट को लोड नहीं करता है। क्यूं कर?
> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
मैं क्रोम के 93.184.216.34
बजाय टाइप करता हूं http://example.com
। यह वेबसाइट को लोड नहीं करता है। क्यूं कर?
जवाबों:
क्योंकि वास्तव में उचित Host
साइट को प्राप्त करने के लिए उचित HTTP हेडर की आवश्यकता होती है।
एक ही आईपी पते पर कई वेब साइटों को होस्ट करना और Host
क्लाइंट द्वारा निर्दिष्ट HTTP हेडर (साथ ही टीएलएस एसएनआई मान एचटीपीएस के मामले में आजकल) के बीच अंतर करना बहुत आम है ।
यही है, जब आपने http://example.com
अपने ब्राउज़र में प्रवेश किया Host
था तो हेडर था example.com
, लेकिन जब आप प्रवेश करते हैं तो ऐसा नहीं होता है 93.184.216.34
। आप दोनों मामलों में एक ही वेब सर्वर तक पहुंचते हैं, लेकिन आपको अलग-अलग प्रतिक्रियाएं मिलती हैं (इस विशेष मामले में 200 बनाम 404)।
Host
बात पर थोड़ा विस्तार कर सकता है कि वेब सर्वर आमतौर पर इसका क्या उपयोग करते हैं? ऑनलाइन खोजना बहुत कठिन है क्योंकि यह शब्द बहुत अधिक है।
curl -H "Host: example.com" http://93.184.216.34/
या ऐसा कुछ कर सकते हैं ।
example.com example.net example.org example.edu
एक ही पते (तों) पर संभालता है , यही कारण है कि इसे वास्तव में होस्ट हेडर में नाम की आवश्यकता है।
क्योंकि आमतौर पर वेब सर्वर "वर्चुअल सर्वर" तकनीक का उपयोग करते हैं और आपके HTTP अनुरोध पर आपके द्वारा अनुरोधित डोमेन नाम के भीतर उत्तर देने में सक्षम होते हैं, लेकिन वेब सर्वर के आईपी पते पर नहीं। एक आईपी पते पर एक से अधिक डोमेन नाम छिपाने के लिए धन्यवाद।
उदाहरण के लिए, अपाचे वेब सर्वर आपके HTTP अनुरोध का जवाब अनुभाग का उपयोग करके आईपी पते के साथ दे सकता है:
<VirtualHost *:80>
ServerName Default
...
</VirtualHost>
या यदि कोई VirtualHost विन्यास में प्रयोग नहीं किया जाता है।
Apache में VirtualHost फीचर 1996 में पेश किया गया था।
में अपाचे , आप कई वेबसाइटों के लिए सिर्फ एक ही आईपी पते का उपयोग कर होस्ट कर सकते हैं। इसे वर्चुअल होस्टिंग कहा जाता है। यह है कि उप-डोमेन कैसे बनाए जा सकते हैं, यहां तक कि स्टैंडअलोन डोमेन भी। यह प्रत्येक डोमेन / उपडोमेन के लिए VirtualHost निर्देशों से युक्त अपाचे विन्यास फाइल स्थापित करके किया जाता है।
एक उदाहरण HTTP सर्वर जिसमें दो वर्चुअल होस्ट हैं, example1.com और example2.com इस तरह दिख सकते हैं (IP पता परिभाषा):
<VirtualHost 93.184.216.34:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
</VirtualHost>
<VirtualHost 93.184.216.34:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
</VirtualHost>
यह इस तरह भी दिख सकता है (नाम-आधारित परिभाषा):
<VirtualHost *:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
</VirtualHost>
दोनों मामलों में, दो वर्चुअल होस्ट रिकॉर्ड आंतरिक रूप से मेमोरी में बनाए जाते हैं और अपाचे द्वारा यूआरआई अनुरोध आने पर तुलना करने के लिए उपयोग किया जाता है।
जब कोई उपयोगकर्ता एजेंट के माध्यम से आईपी पते में टाइप करता है, तो कॉन्फ़िगरेशन फ़ाइल में सूचीबद्ध पहला वर्चुअल होस्ट प्राथमिक डोमेन (यानी इस मामले में example1.com) के रूप में उपयोग किया जाता है।
जब कोई उपयोगकर्ता एक डोमेन नाम में टाइप करता है, तो अनुरोध एक सार्वजनिक इंटरनेट डीएनएस नेटवर्क (आईसीएएनएन) को भेजा जाता है जो इससे जुड़ा आईपी पता प्रदान करता है। आपने एक ICANN रजिस्ट्रार (जैसे GoDaddy) के माध्यम से दोनों को पंजीकृत किया। आईसीएएनएन नेटवर्क पर सभी DNS सर्वरों के प्रसार के लिए कुछ समय देने के लिए आपके पास ये दोनों सही होने चाहिए। इन दिनों इसमें 24 घंटे तक लग सकते हैं।
जब अनुरोध आपके अपाचे HTTP सर्वर पर रूट किया जाता है, तो आंतरिक वर्चुअलहॉस्ट रिकॉर्ड की सूची के खिलाफ आईपी पते और डोमेन नाम का मिलान किया जाता है। जब एक पाया जाता है, तो उपयोगकर्ता रूट पर वापस जाने के लिए ऑब्जेक्ट संसाधन के लिए पूर्ण फाइलसिस्टम पथ बनाने के लिए दस्तावेज़ रूट का उपयोग किया जाता है। यदि नहीं, तो HTTP 404 को इसके साथ जुड़े किसी भी त्रुटि दस्तावेज़ के साथ भेजा जाता है।
मुझे "घर" शब्दावली का उपयोग करना पसंद है।
आप आसानी से उस पर एक नाम के बिना एक घर को एक पत्र भेज सकते हैं और यह घर पर आ जाएगा।
यदि आप उस व्यक्ति का नाम उस पर डालते हैं तो आप इच्छित प्राप्तकर्ता को भेज रहे हैं।
गंतव्य समान है लेकिन जब यह घर तक पहुंचता है तो इसे कैसे अलग किया जाता है।
जब आप साइट को निर्दिष्ट करते हैं, अर्थात www.example.com तो सर्वर को पता होता है कि अनुरोध को कैसे संभालना है और कौन सा होस्ट करना है और किस साइट पर वापस सेवा करना है।
खोज के लिए महत्वपूर्ण शब्द "नाम आधारित आभासी होस्टिंग" है।
लोग एक ही वेब सर्वर पर कई होस्टनाम आवंटित करना चाहते हैं और प्रत्येक होस्टनाम के लिए अलग-अलग सामग्री परोसते हैं। इसे वर्चुअल होस्टिंग के रूप में जाना जाता है (वर्चुअल मशीनों की अधिक हालिया अवधारणा के साथ भ्रमित नहीं होना चाहिए)।
प्रारंभ में वर्चुअल होस्टिंग सर्वर को कई आईपी पते आवंटित करके किया जाता था, तब गंभीर उपयोग किए गए आईपी पते के आधार पर अलग-अलग सामग्री भेज सकता था, लेकिन इसे बेकार के रूप में देखा जाता था।
इसलिए "होस्ट" हेडर शुरू किया गया था, शुरू में एक एक्सटेंशन के रूप में लेकिन फिर बाद में 1997 में http 1.1 विनिर्देशन का एक अनिवार्य हिस्सा बना। यह हेडर क्लाइंट द्वारा मांगे गए होस्टनाम को निर्दिष्ट करता है। सर्वर तब हेडर के मूल्य के आधार पर विभिन्न सामग्रियों की सेवा कर सकता है।
वेब सर्वर के लिए लागत कम रखने के लिए, बहुत सारे वेब सर्वर कई वेबसाइटों की मेजबानी करते हैं। वे Apache2 / nginx / etc में वर्चुअल होस्ट या Vhosts का उपयोग करके ऐसा करते हैं। इसलिए यदि आप वेबसाइट के आईपी पते पर सीधे जाते हैं, तो आपको सबसे अधिक संभावना है कि "अपाचे काम कर रहा है" स्क्रीन मिलेगी, या संभवतः वेब सर्वर की मुख्य वेबसाइट पर पुनर्निर्देशित भी हो सकती है।
एक Vhost आने वाली वेबसाइट के पते को देखता है और इसे ServerName या ServerAlias नामों से सक्षम Vhosts फ़ाइलों में तुलना करता है। यदि उनमें से एक मेल खाता है, तो वह विशिष्ट वेबसाइट लोड हो जाती है।
जब तक वेबसाइट पर बड़े पैमाने पर लोड (अद्वितीय आगंतुकों / पृष्ठ विचारों की उच्च संख्या) या उच्च लोड एप्लिकेशन (सोचें कि youtube.com, फेसबुक, आदि) हैं, तब तक साझा सर्वर पर काम करना अधिक लागत प्रभावी है। यह केवल एक Wordpress ब्लॉग वेबसाइट को चलाने के लिए अपने आप को एक समर्पित सर्वर ($ 60 / mo से शुरू) पाने के लिए पैसे की बर्बादी होगी। आप एक सर्वर पर संभवत: 200+ वेबसाइटों के साथ एक सर्वर पर एक साझा मंच प्राप्त करना बेहतर समझते हैं। $ 5 / मो के क्षेत्र में लागत अधिक होगी।
ऐसा करने का एक अन्य कारण आईपी पते की कमी है। बस पर्याप्त IPv4 पते शेष नहीं हैं। यह केवल नेट / होम / व्यावसायिक नेटवर्क के उपयोग और Vhosts के उपयोग के माध्यम से है जो हमारे पास बिल्कुल भी शेष है। यहां तक कि जब IPv6 मुख्य धारा बन जाता है, तो सर्वर संभवतः Vhosts (सर्वर लागत) से चिपके रहेंगे।
एक समर्पित आईपी पता महंगा है, जबकि एक सर्वर पर एक नई वेबसाइट बनाना मूल रूप से मुफ्त है।
क्या होता है कि होस्टिंग कंपनी एक एकल आईपी पते को किराए पर देती है जो एक भौतिक सर्वर को इंगित करता है, फिर "वर्चुअल होस्ट" सुविधा का उपयोग करके उस आईपी पते पर हजारों वेबसाइटों को होस्ट करता है।
पीओ बॉक्स की तरह सोचें, अगर आप सिर्फ पोस्ट ऑफिस का पता लिखते हैं, लेकिन बॉक्स नंबर के बिना, मेल डिलीवर नहीं किया जाएगा।
तकनीकी विवरण के साथ यहां बहुत सारे उत्तर हैं, लेकिन मुझे लगता है कि सबसे सरल उच्च-स्तरीय स्पष्टीकरण यह है कि भले ही एक वेब सर्वर आईपी पते पर http ट्रैफ़िक के लिए ठीक से सुन रहा हो, सर्वर को आमतौर पर किसी विशेष डोमेन के लिए उत्तर देने के लिए भी कॉन्फ़िगर किया जाना चाहिए नाम, और वह नाम ग्राहक द्वारा भेजे गए अनुरोध में होना चाहिए (अर्थात वेब ब्राउज़र)
मैं कहता हूं "आमतौर पर" क्योंकि यह लगभग हमेशा इस तरह से किया जाता है, लेकिन वास्तव में ऐसी विधियां हैं जहां आप केवल आईपी पते का उपयोग किए जाने पर जवाब देने के लिए http सर्वर सेटअप कर सकते हैं।
हमें वर्चुअल आईपी और समर्पित आईपी के बीच अंतर को समझने की जरूरत है।
यदि किसी वेबसाइट में एक समर्पित (साझा नहीं) आईपी है, तो (उदाहरण के लिए) http://123.456.789.012 वेबसाइट लाएगा।
इसे आज़माएं, जो एक साइट का समर्पित आईपी पता है जो मेरे पास है, www.negativeiongenerators.com: http://75.126.128.174 लेकिन जैसा कि दूसरों ने कहा है, यह आमतौर पर एक अच्छा विचार नहीं है।