में $ होस्ट और $ http_host का अंतर क्या है Nginx में, $host
और $http_host
चर के बीच क्या अंतर है।Nginx
Nginx
उत्तर
$host
Core मॉड्यूल का एक चर है।
$ मेजबान
यह चर अनुरोध या सर्वर अनुरोध को संसाधित की नाम के शीर्षक में होस्ट लाइन अगर होस्ट हैडर उपलब्ध नहीं है बराबर है।
यह चर इस तरह के मामलों में $ HTTP_HOST से मान अलग हो सकता है: 1) जब होस्ट इनपुट हैडर अनुपस्थित है या एक खाली महत्व है, $ मेजबान server_name निर्देश के मूल्य के बराबर होती है; 2) जब होस्ट के होस्ट में पोर्ट नंबर होता है, तो $ होस्ट में उस पोर्ट नंबर को शामिल नहीं किया जाता है। $ 0.8.17 के बाद $ होस्ट का मान हमेशा लोअरकेस होता है।
$http_host
भी एक ही मॉड्यूल की एक चर रहा है, लेकिन आपको लगता है कि नाम के साथ इसे खोजने नहीं होगा, क्योंकि यह $http_HEADER
(ref) के रूप में सामान्य रूप से परिभाषित किया गया है।
$ http_HEADER
जब लोअरकेस और साथ करने के लिए 'डैश' 'अंडरस्कोर', उदा करने के लिए परिवर्तित परिवर्तित HTTP अनुरोध हेडर हैडर का मूल्य $ http_user_agent, $ http_referer ...;
सारांश:
$http_host
हमेशाHTTP_HOST
अनुरोध हेडर बराबर होती है।$host
के बराबर होती है$http_host
, लोअरकेस और पोर्ट संख्या (यदि है) के बिना, को छोड़कर जबHTTP_HOST
अनुपस्थित है या एक खाली मूल्य है। उस स्थिति में,$host
अनुरोध को संसाधित करने वाले सर्वर केserver_name
निर्देश के मान के बराबर है।
$ होस्ट विशेष रूप से ** पहला सर्वर_नाम' ** है जो वर्तमान सर्वर ब्लॉक में परिभाषित किया गया है। यदि आपके पास एकाधिक 'server_name' है, तो केवल पहला दिखाई देगा। –
सच है। वास्तव में, यह परिभाषित करने के लिए काफी विशिष्ट है: server_name example.com www.example.com; – glarrain
आपके पास एकाधिक 'server_name' निर्देश भी हो सकते हैं। यदि आपके पास पहले में एक रेगेक्स होता है, तो यह '$ होस्ट' बन जाता है, और बदसूरत नियमों के दौरान बदसूरत सामान के सभी प्रकार हो सकते हैं। –