नगीनेक्स 'सुनो' निर्देश के लिए विभिन्न मूल्यों को समझना


10

मैं nginx config लिख रहा हूं, और मेरे पास एक मौलिक प्रश्न है।

इनमें क्या अंतर हैं:

listen 443 ssl;बनाम listen [::]:443 ssl;बनामlisten [::]:443 ssl http2;

मेरा लक्ष्य इस वेब एप्लिकेशन को सुरक्षित है, लेकिन पुराने ग्राहकों के लिए भी अनुकूल है।

नोट: मैं समझता हूँ कि [::]:443ipv6 के साथ है, लेकिन क्या इस मामले में भी ipv4 को शामिल नहीं करता है? मेरी अवधारणाओं को साफ़ करना चाहते हैं।

जवाबों:


16

listen 443 ssl: पोर्ट 443 ( 0.0.0.0:443) पर nginx सर्वर पर सभी ipv4 पते पर सुनता है,

जबकि

listen [::]:443 ssl: पोर्ट पर 443 ( :::443) सर्वर पर सभी IPv6 पते पर nginx सुनता है


[::]:443जब तक आप पैरामीटर निर्दिष्ट नहीं करते, तब तक IPv4 पर nginx प्रतिक्रिया नहीं देगा ipv6only=off:

listen [::]:443 ipv6only=off;


डॉक्टर के अनुसार: http://nginx.org/en/docs/http/ngx_http_core_module.html#listen

एसएसएल:

एसएसएल पैरामीटर (0.7.14) यह निर्दिष्ट करने की अनुमति देता है कि इस पोर्ट पर स्वीकृत सभी कनेक्शन एसएसएल मोड में काम करना चाहिए।

http2:

HTTP2 पैरामीटर (1.9.5) HTTP / 2 कनेक्शन को स्वीकार करने के लिए पोर्ट को कॉन्फ़िगर करता है ।

इसका मतलब यह नहीं है कि यह केवल HTTP / 2 कनेक्शन स्वीकार करता है।

RFC7540 के अनुसार

एक क्लाइंट जो अगले हॉप पर HTTP / 2 के समर्थन के बारे में पूर्व ज्ञान के बिना "http" URI के लिए अनुरोध करता है, HTTP अपग्रेड तंत्र का उपयोग करता है। क्लाइंट ऐसा HTTP / 1.1 अनुरोध करके करता है जिसमें "h2c" टोकन के साथ अपग्रेड हेडर फ़ील्ड शामिल होता है।

एक सर्वर जो HTTP / 2 का समर्थन नहीं करता है वह अनुरोध का जवाब दे सकता है, हालांकि अपग्रेड हेडर फ़ील्ड अनुपस्थित था।

HTTP/1.1 200 OK Content-Length: 243 Content-Type: text/html

एक सर्वर जो HTTP / 2 का समर्थन करता है वह 101 (स्विचिंग प्रोटोकॉल) प्रतिक्रिया के साथ उन्नयन को स्वीकार करता है। 101 प्रतिसाद को समाप्त करने वाली रिक्त पंक्ति के बाद, सर्वर HTTP / 2 फ़्रेम भेजना शुरू कर सकता है।

संक्षेप में :

एक क्लाइंट जो HTTP / 2 का समर्थन नहीं करता है, वह कभी भी HTTP / 2 संचार अपग्रेड के लिए सर्वर से नहीं पूछेगा: उनके बीच संचार पूरी तरह से HTTP1 / 1 होगा।

एक क्लाइंट जो HTTP / 2 का समर्थन करता है, वह सर्वर से (HTTP1 / 1 का उपयोग करके) HTTP / 2 अपग्रेड के लिए पूछेगा:

  • यदि सर्वर HTTP / 2 तैयार है, तो सर्वर क्लाइंट को इस तरह नोटिस करेगा: उनके बीच संचार HTTP / 2 पर स्विच हो जाएगा।
  • यदि सर्वर HTTP / 2 तैयार नहीं है, तो सर्वर HTTP1 / 1 के साथ उत्तर देने वाले अपग्रेड अनुरोध को अनदेखा कर देगा: उनके बीच संचार HTTP1 / 1 से काफी कम रहना चाहिए।

शायद यहाँ और अधिक संक्षेप: http://qnimate.com/http2-compatibility-with-old-browsers-and-servers/


हालाँकि nginx doc में टीएलएस पर HTTP / 2 के बारे में निम्नलिखित बताया गया है:

ध्यान दें कि टीएलएस पर HTTP / 2 कनेक्शन स्वीकार करने के लिए "एप्लिकेशन-लेयर प्रोटोकॉल नेगोशिएशन" (ALPN) TLS एक्सटेंशन समर्थन की आवश्यकता होती है, जो ओपनएसएसएल संस्करण 1.0.2 के बाद से ही उपलब्ध है।

सुनिश्चित करें कि पुराने ग्राहक इस आवश्यकता के अनुरूप हैं।


0

एक विकल्प कहा जाता है ipv6onlyजो निर्धारित करता है कि IPv6 पता IPv4 पर भी लागू होता है या नहीं। डिफ़ॉल्ट रूप से इसे चालू किया जाता है (जिसका अर्थ है कि यह नहीं है)।

मैनुअल में कहा गया है कि इसे केवल एक बार सेट किया जा सकता है, जो मुझे लगता है कि इसका मतलब है कि यदि आप इसे एक listenनिर्देश में बंद करते हैं , तो यह सभी के लिए बंद हो जाता है।

देखें इस दस्तावेज़ जानकारी के लिए।


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