nginx: "server_name" रिज़ॉल्यूशन ऑर्डर?


8

मेरे nginx.conf में कई "सर्वर" ब्लॉक हैं। दस्तावेज़ीकरण उस आदेश के बारे में गलत लगता है जिसमें server_name मिलान होता है।

मेरा आत्मविश्वास कुछ इस तरह है:

server {
  listen 80
  server_name domain.com *.domain.com

  # do stuff
}

server {
  listen 80
  server_name sub.domain.com *.sub.domain.com

  # do something else
}

मैं यह पता लगाने की कोशिश कर रहा हूं कि होस्ट = www.sub.domain.com के साथ अनुरोध सही जगह (दूसरा सर्वर) पर क्यों जा रहा है, जब प्रलेखन इंगित करता है कि इसे पहले सर्वर पर जाना चाहिए।

Nginx प्रलेखन इंगित करता है कि मैचों के लिए सर्वर ब्लॉक "क्रम में" चेक किए गए हैं, जिसका अर्थ है कि मेजबान * .sub.domain.com के साथ किसी भी अनुरोध को पहले सर्वर द्वारा पकड़ा जाना चाहिए, न कि दूसरे सर्वर द्वारा। ( http://wiki.nginx.org/HttpCoreModule#server_name )

इसके अलावा, * वाइल्डकार्ड किसी भी संख्या में उपडोमेन भागों से मेल खाता है, इसलिए * .domain.com www.sub.domain.com से मेल खाता है। ( http://nginx.org/en/docs/http/server_names.html#wildcard_names )

यदि यह दस्तावेज़ गलत है, तो वास्तविक मिलान आदेश क्या है?

जवाबों:


18

Nginx प्रलेखन से ( http://nginx.org/en/docs/http/server_names.html ):

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

  1. सटीक नाम
  2. सबसे लंबे वाइल्डकार्ड का नाम तारांकन से शुरू होता है, जैसे "* .example.org"
  3. तारांकन चिह्न के साथ सबसे लंबा वाइल्डकार्ड नाम समाप्त होता है, उदाहरण के लिए "मेल। *"
  4. पहली मिलान नियमित अभिव्यक्ति (एक विन्यास फाइल में उपस्थिति के क्रम में)

2

प्रलेखन कहता है:

Nginx कॉन्फ़िगरेशन फ़ाइलों में सर्वर {...} ब्लॉकों के खिलाफ आने वाले HTTP अनुरोध के होस्ट हेडर की तुलना करता है और पहले वाले मिलान से चुनता है।

जो प्रतीत हो रहा है, वह यह है कि यह सभी serverब्लॉकों से सबसे अच्छा मैच चुनता है , इसलिए www.sub.domain.com, दूसरे कॉन्फ़िगरेशन से मेल खाता है। मेरे पास उस बैकअप के लिए कोई दस्तावेज नहीं है, इसलिए आप उस व्यवहार की पुष्टि करने के लिए कुछ परीक्षण चला सकते हैं। नाम समाधान के बारे में बात करने वाला यह डॉक भी है ।

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