सवाल क्या सर्वर केवल एक वेबसाइट धारण करते हैं?


जैसा कि मैं समझता हूं कि डीएनएस सर्वर के आईपी पते के साथ डोमेन नाम को लिंक करता है, वेबसाइट पर संग्रहीत किया जाता है, क्या इसका मतलब यह है कि प्रत्येक सर्वर केवल एक वेबसाइट रख सकता है? यदि वे नहीं करते हैं, तो सर्वर के आईपी पते को कॉल करने से पता चलता है कि एक ही सर्वर पर कई लोग क्या चाहते हैं?


79
2018-06-18 03:02


मूल


विकिपीडिया के लिए एक अच्छा परिचय है साझा वेब होस्टिंग। यदि आप अपने ब्राउज़र में http: // <IP_ADDR> / दर्ज करते हैं, तो HTTP अनुरोध में डोमेन नहीं होगा Host: हैडर। साझा होस्टिंग के मामले में, वेब सर्वर को प्रदाता द्वारा इसे विभिन्न तरीकों से संभालने के लिए कॉन्फ़िगर किया जा सकता है (उदा। डिफ़ॉल्ट है, प्रदाता को रीडायरेक्ट आदि)। - Jedi
मैंने लिंक पर क्लिक किया है जो संदेशों के साथ तोड़ते हैं जैसे "इस सर्वर ने कभी भी उस वेबसाइट को होस्ट नहीं किया है जिसे आप ढूंढ रहे हैं"। - aitchnyu
यदि आप एक सर्वर पर एकाधिक एप्लिकेशन चलाने के लिए बहुत दूर देख रहे हैं - कहें कि आपके पास क्रमशः बंदरगाह 8001 और 8002 पर दो ऐप्स MyApp और YourApp हैं। आपके पास दो लोड बैलेंसर्स या एप्लिकेशन प्रॉक्सी हो सकते हैं: myapp.com और yourapp.com। उन्हें डिफ़ॉल्ट बंदरगाहों (80/443) पर अनुरोध प्राप्त करें और क्रमशः बंदरगाहों 8001 और 8002 पर वास्तविक सर्वर पर अग्रेषित करें। - rohithpr
महान सवाल प्रत्येक वेबसाइट को अपने स्वयं के आईपी पते की आवश्यकता होती है (एक सर्वर में एक से अधिक आईपी पते हो सकते हैं)। HTTP / 1.1 में होस्ट हेडर को आपके द्वारा वर्णित सटीक समस्या के बारे में जानने के लिए पेश किया गया था। में "इंटरनेट पता संरक्षण" देखें www8.org/w8-papers/5c-protocols/key/key.html - A E
यदि http 1.1 में होस्ट हेडर नहीं था, तो ipv6 अब तक लागू किया जाएगा ;-) :-( - Lenne


जवाब:


असल में: ब्राउजर में HTTP अनुरोध में डोमेन नाम शामिल है, इसलिए वेबसर्वर जानता है कि किस डोमेन से अनुरोध किया गया था और तदनुसार जवाब दे सकता है।


HTTP अनुरोध

यहां बताया गया है कि आपका सामान्य HTTP अनुरोध कैसे होता है:

  1. उपयोगकर्ता फॉर्म में एक यूआरएल प्रदान करता है http://host:port/path

  2. ब्राउजर यूआरएल के मेजबान (डोमेन) भाग को निकालता है और यदि आवश्यक हो तो उसे आईपी पते में अनुवाद करता है नाम संकल्प। यह अनुवाद DNS के माध्यम से हो सकता है, लेकिन इसे (उदाहरण के लिए, स्थानीय नहीं है) hosts सामान्य ओएस पर फ़ाइल DNS को बाईपास करता है)।

  3. ब्राउजर निर्दिष्ट पोर्ट पर एक टीसीपी कनेक्शन खोलता है, या उस आईपी पते पर पोर्ट 80 पर डिफ़ॉल्ट करता है।

  4. ब्राउज़र एक HTTP अनुरोध भेजता है। HTTP / 1.1 के लिए, ऐसा लगता है:

    GET /path HTTP/1.1
    Host: example.com
    

    ( Host हेडर मानक है और HTTP / 1.1 में आवश्यक है। यह HTTP / 1.0 spec में निर्दिष्ट नहीं था, लेकिन कुछ सर्वर इसे वैसे भी समर्थन करते हैं।)

यहां से, वेबसर्वर में कई प्रकार के सूचनाएं हैं जिनका उपयोग यह तय करने के लिए किया जा सकता है कि प्रतिक्रिया क्या होनी चाहिए। ध्यान दें कि एक ही वेबसर्वर के लिए कई आईपी पते से बाध्य होना संभव है।

  • टीसीपी सॉकेट से अनुरोध किया गया आईपी पता
    • क्लाइंट का आईपी पता भी उपलब्ध है, लेकिन इसका शायद ही कभी उपयोग किया जाता है - कभी-कभी अवरुद्ध / फ़िल्टरिंग के लिए
  • टीसीपी सॉकेट से अनुरोधित बंदरगाह
  • अनुरोधित होस्टनाम, जैसा कि निर्दिष्ट है Host HTTP अनुरोध में ब्राउज़र द्वारा शीर्षलेख।
  • अनुरोधित पथ
  • कोई अन्य शीर्षलेख (कुकीज़, आदि)

जैसा कि आपने देखा है, इन दिनों सबसे आम साझा होस्टिंग सेटअप एक ही आईपी पते पर एकाधिक वेबसाइटें रखता है: बंदरगाह संयोजन, बस छोड़कर Host वेबसाइटों के बीच अंतर करने के लिए।

इसे ए के रूप में जाना जाता है नाम-आधारित वर्चुअल होस्ट अपाचे-भूमि में, जबकि निगेंक्स उन्हें बुलाता है सर्वर ब्लॉक में सर्वर नाम और आईआईएस पसंद करता है आभासी परिसेवक


एचटीटीपीएस के बारे में क्या?

एचटीटीपीएस थोड़ा अलग है। सब कुछ टीसीपी कनेक्शन की स्थापना के समान है, लेकिन उसके बाद एक एन्क्रिप्टेड टीएलएस सुरंग स्थापित की जानी चाहिए। लक्ष्य अनुरोध के बारे में किसी भी जानकारी को रिसाव नहीं करना है।

यह सत्यापित करने के लिए कि सर्वर वास्तव में इस डोमेन का मालिक है, सर्वर को एक विश्वसनीय तृतीय पक्ष द्वारा हस्ताक्षरित प्रमाणपत्र भेजना होगा। इसके बाद ब्राउज़र इस प्रमाणपत्र की तुलना डोमेन से अनुरोध करेगा।

यह एक समस्या प्रस्तुत करता है। सर्वर अनुरोध करता है कि कौन सी मेजबान (वेबसाइट) प्रमाणपत्र भेजना है, अगर HTTP अनुरोध प्राप्त होने से पहले इसे करने की आवश्यकता है?

परंपरागत रूप से, यह एचटीटीपीएस की आवश्यकता वाली प्रत्येक वेबसाइट के लिए एक समर्पित आईपी पता (या बंदरगाह) द्वारा हल किया गया था। जाहिर है, यह समस्याग्रस्त हो जाता है क्योंकि हम आईपीवी 4 पते से बाहर निकलना शुरू करते हैं।

दर्ज SNI (सर्वर नाम संकेत)। ब्राउज़र अब टीएलएस वार्ताओं के दौरान होस्टनाम पास करता है, इसलिए सर्वर के पास यह जानकारी सही प्रमाणपत्र भेजने के लिए पर्याप्त है। सर्वर की ओर, कॉन्फ़िगरेशन HTTP वर्चुअल होस्ट कॉन्फ़िगर किए जाने के समान ही है।

नकारात्मकता यह है कि मेजबाननाम अब एन्क्रिप्शन से पहले सादा पाठ के रूप में पारित किया गया है, और अनिवार्य रूप से लीक की गई जानकारी है। यह आम तौर पर एक स्वीकार्य ट्रेडऑफ माना जाता है, क्योंकि होस्टनाम सामान्य रूप से किसी भी DNS क्वेरी में प्रकट होता है।


यदि आप केवल आईपी पते से साइट का अनुरोध करते हैं तो क्या होगा?

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

यह डिफ़ॉल्ट साइट सर्वर की व्यवस्थापक की वरीयता के आधार पर, अपनी स्वयं की स्वतंत्र साइट (अक्सर एक त्रुटि संदेश दिखाती है) हो सकती है, या यह सर्वर पर अन्य साइटों में से कोई भी हो सकती है।


149
2018-06-18 03:11



साथ ही, एक सर्वर को कई सर्वरों में विभाजित किया जा सकता है, जैसा कि लोड बैलेंसर्स के मामले में है, जैसे हेरोोकू और अमेज़ॅन का उपयोग करता है। - phyrfox
@phyrfox हाँ, मैंने इसे जोड़ने के बारे में सोचा, लेकिन यह केवल प्रश्न से संबंधित है और मैं जवाब बहुत लंबा नहीं बनाना चाहता था। बाद में इसके लिए एक सेक्शन जोड़ना अभी भी समाप्त हो सकता है। - Bob
किंवदंती यह है कि सबडोमेन नेटवर्क के अंदर इतना विशिष्ट कंप्यूटर इंगित करते हैं। सिद्धांत रूप में - Loupax
"परंपरागत रूप से, यह एचटीटीपीएस की आवश्यकता वाली प्रत्येक वेबसाइट के लिए एक समर्पित आईपी पता (या बंदरगाह) द्वारा हल किया गया था। जाहिर है, यह समस्याग्रस्त हो जाता है क्योंकि हम आईपीवी 4 पते से बाहर निकलना शुरू करते हैं।", तो उस विवेक के बिना, हम सभी के पास आईपीवी 6 होगा । - Lenne


मेरे पास गैर-तकनीकी लोगों के लिए यह स्पष्टीकरण है।

जैक, जिल और जो एक छात्रावास में रहते हैं, और उनके पास सेलफोन नहीं हैं।

फोनबुक में, वे सभी एक ही संख्या के साथ सूचीबद्ध हैं। (एक रिकॉर्ड)

आप नंबर डायल करते हैं, और कोई फोन उठाता है; आप कहते हैं "मैं जिल से बात करना चाहता हूं", और आप उसे लाइन पर ले जाते हैं।

फोनबुक में ए-रिकॉर्ड (ए फोनेनंबर / आईपी-एड्रेस) के बजाए, यह सिर्फ "डॉर्मिटरी एक्स" कह सकता है, तो आपको डोरमेटरी एक्स के लिए नंबर देखना चाहिए। यह एक सीएनएन रिकॉर्ड है।

यदि जिल उपलब्ध नहीं है, तो आप मिल सकते हैं

  • 404 जिल यहाँ नहीं है
  • 410 जिल मर चुका है।
  • 301 जिल पीटर के साथ चले गए हैं
  • 302 जिल पीटर का दौरा कर रहा है, इसके बजाय उसे बुलाओ

  • 400 मैं तुम्हें समझ नहीं सकता।

  • 401 आप कौन हैं पासवर्ड क्या है? या हम 10 बजे के बाद पुरुष कॉलर की अनुमति नहीं देते हैं
  • 402 भुगतान आवश्यक (क्या आप निश्चित हैं कि जिल उसका असली नाम है ;-))
  • 403 नहीं, यह सही पासवर्ड नहीं है।
  • 418 जिल एक टीपोट है :-)
  • 42 9 जिल कोई और कॉल नहीं ले सकता है।
  • 451 आप अपने संयम आदेश का उल्लंघन कर रहे हैं।

  • 500 हमारे फोन सिस्टम टूट गया है।


92
2018-06-18 17:15



418 के पीछे आरएफसी उत्सुकता के लिए है tools.ietf.org/html/rfc2324 और एक दिलचस्प लेख sitesdoneright.com/blog/2013/03/... :) - Wordzilla


जैसा कि मैं समझता हूं कि डीएनएस सर्वर के आईपी पते के साथ डोमेन नाम को लिंक करता है, वेबसाइट पर संग्रहीत किया जाता है, क्या इसका मतलब यह है कि प्रत्येक सर्वर केवल एक वेबसाइट रख सकता है?

सबसे पहले, आपको यह समझने की जरूरत है कि यहां कई अलग-अलग अवधारणाएं हैं।

  • वेबसाइट, वेब पेजों का एक समूह जो एक सुसंगत संपूर्ण बनाता है।
  • आईपी ​​पता, इंटरनेट प्रोटोकॉल द्वारा यातायात के लिए स्रोत या गंतव्य के रूप में उपयोग किए जाने वाले आईपी पते, आईपीवी 4 के लिए 32-बिट, आईपीवी 6 के लिए 128 बिट)।
  • सर्वर, एक मशीन जिसका काम ग्राहकों से अनुरोधों को पूरा करना है।
  • होस्टनाम, एक नाम DNS में मशीन की पहचान करने के लिए उपयोग किया जाता है (उदा। "Www.example.com" या "en.wikipedia.org")

इन चीजों में से किसी के बीच एक-एक संबंध नहीं है। एक सर्वर में कई आईपी पते हो सकते हैं; एकाधिक होस्टनाम एक आईपी पते पर इंगित कर सकते हैं; एक होस्ट नाम एकाधिक आईपी पते पर इंगित कर सकता है। एकाधिक वेबसाइट एक ही होस्टनाम के तहत हो सकती हैं। एक वेबसाइट कई होस्टनामों में फैली जा सकती है।

यदि वे नहीं करते हैं, तो सर्वर के आईपी पते को कॉल करने से पता चलता है कि एक ही सर्वर पर कई लोग क्या चाहते हैं?

पुराने दिनों में (HTTP 1.0 और इससे पहले) प्रत्येक होस्टनाम जिसे सर्वर अलग-अलग संभालना चाहता था, उसका अपना आईपी पता होना चाहिए था। यह बल्कि अपर्याप्त था।

HTTP 1.1 जोड़ा गया Host"HTTP अनुरोध में अनिवार्य फ़ील्ड के रूप में हेडर (आईआईआरसी कुछ विक्रेताओं ने पहले इसे एक एक्सटेंशन के रूप में समर्थन दिया था)। इस सर्वर को बताया गया कि होस्टनाम से अनुरोध किया गया था और इसलिए इसे उसी आईपी पते पर विभिन्न होस्टनामों के लिए अलग-अलग सामग्री की सेवा करने की अनुमति दी गई। ग्राहकों में HTTP 1.1 के लिए अब सर्वव्यापी है।

दुर्भाग्य से, एसएसएल (बाद में टीएलएस) ने एक शिकन जोड़ा। एसएसएल / टीएलएस सत्र की स्थापना करने के लिए सर्वर को क्लाइंट को प्रमाण पत्र प्रस्तुत करने की आवश्यकता होती है जो अनुरोधित होस्टनाम को कवर करता है, लेकिन HTTP अनुरोध तब तक नहीं पहुंचता जब तक कि SSL / TLS सत्र स्थापित नहीं हो जाता है।

एक प्रमाणपत्र में उपयोग के माध्यम से एकाधिक होस्टनामों को कवर करना संभव है SubjectAltName क्षेत्र या वाइल्डकार्ड का उपयोग CommonName खेत। हालांकि, यह प्रशासनिक चुनौतियों का सामना करता है, विशेष रूप से यदि होस्टनाम शामिल हैं तो विभिन्न स्वामित्व वाले डोमेन के अधीन हैं।

तो टीएलएस ने "सर्वर नाम संकेत" (एसएनआई) एक्सटेंशन पेश किया। इस एक्सटेंशन के साथ, ग्राहक टीएलएस हैंडशेक प्रक्रिया के दौरान सर्वर से अनुरोधित होस्टनाम भेजता है। सर्वर तब उचित प्रमाणपत्र प्रस्तुत कर सकता है। दुर्भाग्यवश, जबकि सभी प्रमुख एसएसएल / टीएलएस कार्यान्वयन के मौजूदा संस्करण एसएनआई का समर्थन करते हैं, वहीं पुराने संस्करणों के उपयोग में कमी आने में काफी समय लगा है।


6
2018-06-19 05:23



आप यह उल्लेख करना भूल गए कि टीसीपी कई बंदरगाहों पर सुन सकता है, प्रत्येक पर अलग-अलग सर्वर चला रहा है ... - Toby Speight
हां, लेकिन आपके पास डीएनएस में पोर्टनबर्स नहीं हैं, और आप joe.p.user पर जाने की अपेक्षा नहीं कर सकते हैं our.fabulous.site:81 इसके अलावा, कुछ फ़ायरवॉल गैर-मानक पोर्टनबर्स तक आउटगोइंग पहुंच को अवरुद्ध करते हैं। - Lenne


जवाब कुछ जवाबों की तुलना में थोड़ा अधिक जटिल है। जब आप एक DNS लुकअप करते हैं तो आपको एक आईपी पता प्राप्त करना होगा (A आईपीवी 4 के लिए रिकॉर्ड, AAAA आईपीवी 6 के लिए)। आपको संवाद करने के लिए टीसीपी / आईपी पर एक सॉकेट खोलने में सक्षम होना चाहिए या पूरी चीज विफल होनी चाहिए। वह पता किसी सर्वर का प्रतिनिधित्व कर सकता है या यह लोड बैलेंसर का प्रतिनिधित्व कर सकता है। यह एक प्रॉक्सी का प्रतिनिधित्व भी कर सकता है। यदि मेजबान क्लाउडफ्लारे के पीछे है, उदाहरण के लिए, आपको प्राप्त पता क्लाउडफ्लेयर सर्वर का है। वास्तविक सर्वर कहीं और है। यह होस्ट को अस्वीकार सेवा के हमलों जैसी समस्याओं से बचने देता है।

आभासी होस्टिंग क्या आप इसके बारे में पूछ रहे हैं (कुछ अन्य प्रश्न इस पर छूए, लेकिन किसी भी विवरण में नहीं)। वर्चुअल होस्टिंग वेब अनुरोध लेता है और यह निर्धारित करने के लिए कि कौन सी वेबसाइट सेवा करने के लिए होस्ट नाम (i.e. domain.com) देखती है। तो में अपाचे HTTP वेब सर्वर आप इस तरह एक विन्यास होगा

<VirtualHost *:80>
    ServerName www.domain.com
    ServerAlias domain.com

    DocumentRoot /var/www/domain.com
</virtualHost>

उदाहरण के लिए यह सरलीकृत है। तो हम अपाचे को किसी भी आईपी के पोर्ट 80 पर सुनने के लिए कह रहे हैं (आधुनिक मशीन वर्चुअल मशीन में आपके मशीन के आईपी को अपने लाइव आईपी से अलग किया जा सकता है)। हम तब कहते हैं कि यह है domain.com वेबसाइट और वेबसाइट किस निर्देशिका में रहती है। अलग-अलग वेबसाइटों को संभालने के लिए अपाचे को बताने के लिए हम इस ब्लॉक को बार-बार दोहरा सकते हैं। प्रत्येक वेब सर्वर इस प्रकार के सिस्टम का समर्थन करता है।

इसे संभालने का एक और तरीका वेब सर्वर को सभी वेब यातायात को एक प्रोग्रामिंग स्क्रिप्ट (यानी PHP, ASP.NET, आदि) पर निर्देशित करना होगा और फिर वह एकल स्क्रिप्ट निर्धारित करेगी कि कौन सी वेबसाइट और पेज प्रदर्शित करना है।


3
2018-06-20 20:54





DNS का उपयोग करके आप एक अलग आईपी पते पर जितने चाहें उतने नाम असाइन कर सकते हैं (आपके में मेजबान फ़ाइल उदाहरण के लिए, आप रिक्त स्थान के साथ प्रत्येक नाम को अलग कर सकते हैं)। एक DNS सर्वर का उपयोग करके आप भी कर सकते हैं एक ही नाम पर एकाधिक आईपी पते असाइन करें। यह एक-से-एक रिश्ते तक ही सीमित नहीं है।

एक वेब सर्वर जानता है कि किस साइट पर सेवा करना है की जांच अनुरोध की गयी यूआरएल। यह देखता है कि किस डोमेन से अनुरोध किया गया था, जिस बंदरगाह का अनुरोध किया गया था और किस प्रोटोकॉल का उपयोग किया गया था। इसका DNS से ​​कोई लेना देना नहीं है और HTTP प्रोटोकॉल द्वारा संभाला जाता है।


1
2018-06-18 03:15





वेब सर्वर में होस्ट कंटेनर की अवधारणा है (यहाँ उदाहरण के लिए, टोमकैट के लिए प्रलेखन है)। एकाधिक होस्ट कंटेनरों को एक ही बॉक्स / आईपी पते के लिए कॉन्फ़िगर किया जा सकता है, जो एकाधिक डोमेन की सेवा करता है। कंटेनरों में स्वतंत्र काम करने वाली निर्देशिकाएं, प्रमाणीकरण क्षेत्र, लॉग निर्देशिका और चीजें जैसी हैं।

नए अनुरोध के लिए सर्वर प्रासंगिक कंटेनर पाता है डोमेन का नाम खरीदते हैं इस HTTP अनुरोध का हिस्सा है।

यदि वे अलग-अलग बंदरगाहों पर चलते हैं तो पूरी तरह से अलग वेब सर्वर उदाहरण एक ही आईपी पता साझा कर सकते हैं। यह ज्यादातर विभिन्न विकास और परीक्षण वातावरण में उपयोग किया जाता है जहां डोमेन नाम उपलब्ध नहीं हो सकते हैं, क्योंकि उत्पादन सर्वर मनमाने ढंग से बंदरगाह पर नहीं चल सकता है।

अंत में, यहां तक ​​कि यदि किसी वेबसाइट के लिए सख्ती से अद्वितीय आईपी पता आवश्यक है, तो सर्वर बॉक्स में अक्सर कई नेटवर्क एडाप्टर होते हैं, इसलिए एकाधिक आईपी पते का उपयोग करने के लिए कॉन्फ़िगर किया जाता है।


0
2018-06-20 07:49





आपका सर्वर आईपी पता एक ही समय में कई अलग-अलग डोमेन नाम रख सकता है।

जब आप वेबसाइट तक पहुंचते हैं तो आपका ब्राउज़र उसमें डोमेन नाम के साथ HTTP अनुरोध भेजता है, और सर्वर यह पाया जा सकता है कि कौन सा वेबसाइट डेटा आपको वापस भेजना चाहिए।

इसे वर्चुअल होस्ट कहा जाता है, इतना आसान है :)

जरा देखो तो यहाँ DNS और वर्चुअल होस्ट के बारे में अधिक जानकारी के लिए।


0
2017-07-23 06:59