ServerName और ServerAlias ​​कैसे काम करता है?


62

यह एक वर्चुअल होस्ट कॉन्फिग का निम्नलिखित भाग है जिसे मुझे आगे स्पष्टीकरण की आवश्यकता है:

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin example@example.com
  ServerName  141.29.495.999
  ServerAlias example.com
...

यह वर्तमान में मेरे पास मौजूद डोमेन के जैसा है (उदाहरण के लिए, मेरे पास डोमेन नाम नहीं है)।

<VirtualHost *:80>- पोर्ट 80 से आईपी पर किए गए सभी HTTP अनुरोधों के लिए निम्न सेटिंग्स की अनुमति दें, जिस पर इस सर्वर से संपर्क किया जा सकता है। उदाहरण के लिए, यदि सर्वर को एक से अधिक IP तक पहुँचा जा सकता है, तो आप इस निर्देश को दोनों के बजाय केवल एक तक सीमित रख सकते हैं।

ServerName- यदि HTTP अनुरोध का होस्ट हिस्सा इस नाम से मेल खाता है, तो अनुरोध को अनुमति दें। आम तौर पर यह एक डोमेन नाम होता है जो किसी IP पर मैप करता है, लेकिन इस मामले में HTTP अनुरोध मेजबान को इस आईपी से मेल खाना चाहिए।

ServerAlias - सर्वर द्वारा स्वीकृत वैकल्पिक नाम।

मेरे लिए भ्रामक हिस्सा, उपरोक्त परिदृश्य में, अगर मैंने सेट किया ServerAlias mytestname.comऔर फिर HTTP अनुरोध किया mytestname.com, तो काम करने के लिए सर्वर के आईपी की ओर इशारा करते हुए एक DNS रिकॉर्ड होना चाहिए? किस मामले में, ServerAlias ​​सिर्फ मूल रूप से EXTRA ServerName प्रविष्टियाँ है?

कहो कि मेरे पास एक DNS प्रविष्टि थी जैसे कि foobar.com = 141.29.495.999लेकिन तब मैं खाली था ServerName = 141.29.495.999और ServerAliasखाली था, इसका मतलब यह होगा कि यद्यपि foobar.com सही IP पर हल हो जाता है, क्योंकि foobar.com को स्वीकार करने का कोई संदर्भ नहीं है ServerNameया ServerAlias?

या कुछ और। यार मैं उलझन में हूँ।


1
आप 2-अंतिम पैराग्राफ में कुछ शब्द भूल गए। :-)
ThatGraemeGuy

जवाबों:


105

इसके बारे में इस तरह से सोचें:

DNS फोन डायरेक्टरी / येलो पेज है। जब कोई आपका फोन कॉल करना चाहता है, तो वे आपका नाम देख सकते हैं और अपना फोन नंबर प्राप्त कर सकते हैं और उस फोन को कॉल कर सकते हैं। DNS कंप्यूटर के लिए भी ऐसा ही करता है - जब कोई व्यक्ति www.example.comआईपी ​​पते के लिए DNS पूछना चाहता है और तब वे उस आईपी पते वाले कंप्यूटर से संपर्क कर सकते हैं। यही संकल्प का अर्थ है। अपाचे के साथ करने के लिए एक आईपी पते को हल करने के लिए कुछ भी नहीं है; यह कड़ाई से एक DNS सवाल है।

ServerNameऔर ServerAliasअधिक एक कंपनी की आंतरिक फोन सूची की तरह है। आपका वेबसर्वर स्विचबोर्ड है; यह सर्वर पर आने वाले सभी कनेक्शनों को स्वीकार करेगा। फिर क्लाइंट / कॉलर उन्हें बताएगा कि वे किस नाम की तलाश कर रहे हैं, और यह अपाचे कॉन्फ़िगरेशन में दिखेगा कि उस नाम को कैसे संभालना है।

यदि नाम अपाचे कॉन्फ़िगरेशन में ServerName / ServerAlias ​​के रूप में सूचीबद्ध नहीं है, तो अपाचे हमेशा उन्हें पहले वर्चुअलीहैट सूचीबद्ध करेगा। या, अगर कोई VirtualHost बिल्कुल भी नहीं है, तो यह वही सामग्री देगा जो अनुरोध में hostname दिया गया है।

ETA: तो, एक सामान्य कनेक्शन के लिए कदम से कदम:

  1. आप http://www.example.comअपने ब्राउज़र में टाइप करें।
  2. आपका कंप्यूटर अपने DNS रिज़ॉल्वर से पूछता है कि उसे किस आईपी पते का उपयोग करना चाहिए जब वह बात करना चाहता है www.example.com
  3. आपका कंप्यूटर उस IP पते से जुड़ता है, और कहता है कि वह www.example.com( Host:HTTP में शीर्ष लेख) से बात करना चाहता है ।
  4. वेबसर्वर अपने विन्यास को देखकर यह पता लगाता है कि सामग्री के लिए अनुरोध के साथ क्या करना है www.example.com। निम्न में से कोई एक हो सकता है:
    • www.example.comएक के रूप में ServerNameया के ServerAliasलिए सूचीबद्ध है VirtualHost- यदि ऐसा है, तो यह उस VirtualHost के लिए सामग्री को वितरित करने के लिए कॉन्फ़िगरेशन का उपयोग करेगा।
    • सर्वर के पास बिल्कुल भी कोई VirtualHost नहीं है - यदि ऐसा है, तो वह सामग्री वितरित करने के लिए अपने httpd.conf में कॉन्फ़िगरेशन का उपयोग करेगा।
    • सर्वर में VirtualHosts हैं, लेकिन www.example.comउनमें से किसी में भी सूचीबद्ध नहीं है - यदि हां, तो सूची में पहले Virtualhost का उपयोग सामग्री वितरित करने के लिए किया जाएगा।

इसलिए, यदि HTTP अनुरोध का होस्ट हिस्सा है www.example.com, तो DNS उस नाम के लिए आईपी पते को हल करेगा, और HTTP अनुरोध होस्ट हिस्सा वास्तव में एक आईपी होगा; सर्वर तक पहुँचने पर, अपाचे को यह भी पता चल जाएगा कि अनुरोध के लिए कहा गया है www.example.comऔर यदि उस डोमेन नाम के लिए कोई निर्देश है ServerNameया नहीं ServerAlias, तो यह दस्तावेज़ रूट की सेवा कर सकता है?
njp

नहीं - HTTP अनुरोध भाग अभी भी होस्टनाम है। मैं थोड़ा और स्पष्ट करूँगा।
जेनी डी

The server has VirtualHosts but www.example.com isn't listed in any of them - if so, the first Virtualhost in the list will be used to deliver the content.। मैंने यह परीक्षण किया। यह सही है लेकिन मुझे यकीन नहीं है कि यह पहली वर्चुअलहोस्ट है। जानकारी के लिए धन्यवाद। +1
SMMousavi

19

यदि आप ServerName को परिभाषित नहीं करते हैं, तो apache2 इसे / etc / host से अनुमान लगाने की कोशिश करेगा। ServerAlias ​​वैकल्पिक है। सबसे सामान्य उपयोग का मामला है जहां

ServerName example.com
ServerAlias www.example.com

यह सुनिश्चित करने के लिए आपके ऊपर (अपाचे 2 का काम नहीं) है कि अनुरोध वेबसर्वर आईपी तक पहुँच सकते हैं, उदाहरण के लिए, एक डोमेन को पंजीकृत करना और DNS रिकॉर्ड स्थापित करना। डोमेन और डीएनएस रिकॉर्ड के बिना ऐसा करने के लिए एक बहुत ही सामान्य तरीका है (परीक्षण और विकास के लिए) अपनी स्थानीय मशीन / आदि / होस्ट फ़ाइल को सेट करना है ताकि example.com आपके सर्वर के आईपी को इंगित करे।

192.168.0.12 example.com
192.168.0.12 www.example.com

0

मैं दृढ़ता से इस विषय पर आधिकारिक दस्तावेज पढ़ने का सुझाव दूंगा: https://httpd.apache.org/docs/2.4/vhosts/name-based.html

यह कहता है, "यदि कोई मेल नहीं खाता Servername या ServerAlias ​​वर्चुअल मेजबानों के सेट में पाया जाता है जिसमें सबसे विशिष्ट मिलान आईपी पता और पोर्ट संयोजन होता है, तो पहले सूचीबद्ध वर्चुअल होस्ट जो कि उपयोग किया जाएगा।" । तो आपके मामले में यदि आप "foobar.com" का उपयोग करते हैं, तो पहली VirtualHost प्रविष्टि, जो किसी तरह IP 141.29.495.999 से मेल खाती है, httpd द्वारा उपयोग की जाएगी

एक ही दस्तावेज़ कहता है "कई सर्वर एक से अधिक नामों से सुलभ होना चाहते हैं। यह सर्वरएलाइज़ के निर्देश के साथ संभव है,"। तो आप ServerAlias ​​को केवल अतिरिक्त ServerName प्रविष्टियों के रूप में मान सकते हैं।

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