Nginx

2013-03-14 11 views
90

में $ होस्ट और $ http_host का अंतर क्या है Nginx में, $host और $http_host चर के बीच क्या अंतर है।Nginx

उत्तर

144

$hostCore मॉड्यूल का एक चर है।

$ मेजबान

यह चर अनुरोध या सर्वर अनुरोध को संसाधित की नाम के शीर्षक में होस्ट लाइन अगर होस्ट हैडर उपलब्ध नहीं है बराबर है।

यह चर इस तरह के मामलों में $ 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 निर्देश के मान के बराबर है।
+29

$ होस्ट विशेष रूप से ** पहला सर्वर_नाम' ** है जो वर्तमान सर्वर ब्लॉक में परिभाषित किया गया है। यदि आपके पास एकाधिक 'server_name' है, तो केवल पहला दिखाई देगा। –

+2

सच है। वास्तव में, यह परिभाषित करने के लिए काफी विशिष्ट है: server_name example.com www.example.com; – glarrain

+0

आपके पास एकाधिक 'server_name' निर्देश भी हो सकते हैं। यदि आपके पास पहले में एक रेगेक्स होता है, तो यह '$ होस्ट' बन जाता है, और बदसूरत नियमों के दौरान बदसूरत सामान के सभी प्रकार हो सकते हैं। –

 संबंधित मुद्दे