जवाबों:
$hostकोर मॉड्यूल का एक चर है ।
$ मेजबान
यह चर होस्ट हेडर के अनुरोध या सर्वर के नाम के अनुरूप है जो होस्ट हेडर उपलब्ध नहीं होने पर अनुरोध को संसाधित करने वाले सर्वर के नाम के बराबर है।
इस चर का ऐसे मामलों में $ http_host से भिन्न मान हो सकता है: 1) जब होस्ट इनपुट हेडर अनुपस्थित है या रिक्त मान है, तो $ host सर्वर_name निर्देश के मूल्य के बराबर है; 2) जब होस्ट के मान में पोर्ट नंबर होता है, तो $ होस्ट में उस पोर्ट नंबर को शामिल नहीं किया जाता है। $ मेजबान का मान हमेशा 0.8.17 के बाद से कम होता है।
$http_hostउसी मॉड्यूल का एक चर भी है, लेकिन आप इसे उस नाम के साथ नहीं पाएंगे क्योंकि इसे उदारतापूर्वक $http_HEADER( रेफ ) के रूप में परिभाषित किया गया है ।
$ http_HEADER
HTTP रिक्वेस्ट हेडर HEADER का मान जब लोअरकेस में परिवर्तित होता है और 'डैश' से 'अंडरस्कोर' में परिवर्तित होता है, जैसे $ http_user_agent, $ http_referer ...;
सारांश:
$http_hostहमेशा HTTP_HOSTअनुरोध हैडर के बराबर होता है ।$hostके बराबर होती है $http_host, लोअरकेस और पोर्ट संख्या के बिना (यदि है), को छोड़कर जब HTTP_HOSTअनुपस्थित है या एक खाली मूल्य है । उस मामले में, सर्वर $hostके server_nameनिर्देश के मूल्य के बराबर है जो अनुरोध को संसाधित करता है।server_nameनिर्देश भी हो सकते हैं । यदि आप पहले एक में एक रेगेक्स है, जो हो जाता है $host, और सभी प्रकार के बदसूरत सामान फिर से लिखना नियमों के दौरान हो सकता है।
$server_nameचर server_nameनिर्देश के मूल्य या वास्तविक सर्वर नाम के बराबर होता है जो कई server_nameनिर्देश थे, तो उन्हें चुना गया था ?
$server_nameहमेशा server_name निर्देश के साथ निर्दिष्ट पहले मूल्य के बराबर है। उदाहरण के लिए, हमेशा server_name example.com one.example.com two.example.com;, $server_name"example.com" होगा, इसके बावजूद कि उपयोगकर्ता ने कौन सा होस्ट निर्दिष्ट किया है । वास्तव में, यदि आपके पास नहीं है default_server, तो मेजबान कुछ पूरी तरह से अलग हो सकता है (जैसे example.org)।
server_nameहै जिसे वर्तमान सर्वर ब्लॉक में परिभाषित किया गया है। यदि आपके पास कईserver_nameएस हैं, तो केवल पहला दिखाई देगा।