2013-03-04 15 views
15

nginx अब प्रॉक्सीइंग websockets का समर्थन करता है, लेकिन मैं अलग-अलग स्थान स्थान के बिना ऐसा करने के बारे में कोई जानकारी नहीं ढूंढ पा रहा था जो यूआरआई पर लागू होता है जिस पर websockets का उपयोग किया जाता है।nginx रिवर्स प्रॉक्सी websockets

location/{ 
    proxy_http_version 1.1; 

    proxy_set_header Upgrade  $http_upgrade; 
    proxy_set_header Connection "upgrade"; 

    proxy_pass http://host:port; 
} 

कि प्रॉक्सी मानक HTTP के साथ-साथ WebSockets करने का सही तरीका होगा:

मैं कुछ इस दृष्टिकोण के कुछ रूपों की सिफारिश लोगों को देखा है? मैं नहीं चाहता कि अपग्रेड हेडर या कनेक्शन को "अपग्रेड" पर सेट किया जा रहा हो, जब तक ब्राउजर ने यह नहीं भेजा हो, लेकिन websockets के लिए इन प्रॉक्सी_सेट_हेडर लाइनों की आवश्यकता होती है। Nginx सिर्फ मूल अपग्रेड/कनेक्शन हेडर को आगे क्यों नहीं भेजता है?

मैंने इसका प्रयोग किया है और पाया है कि nginx अपग्रेड हेडर को प्रॉक्सी नहीं करता है और दो proxy_set_header लाइनों के बिना चलने पर 'अपग्रेड' से कनेक्शन हेडर को 'बंद' में बदल देता है। उनके साथ, गैर-वेबसाइकिल अनुरोधों के लिए कनेक्शन 'अपग्रेड' है, जो भी खराब है।

धन्यवाद :)

उत्तर

12

क्यों सिर्फ आगे मूल अपग्रेड/कनेक्शन हेडर nginx नहीं करता है?

official documentation से: के बाद से "अपग्रेड करें", एक हॉप-से-हॉप शीर्षक है यह एक ग्राहक से प्रॉक्सी सर्वर

देखें RFC 2616 तक नहीं पहुंचेगी।


मैं अपग्रेड शीर्ष लेख या कनेक्शन "अपग्रेड" जब तक क्या ब्राउज़र भेजा है कि स्थापित किया जा रहा नहीं करना चाहते,

भी एक उदाहरण है:

map $http_upgrade $connection_upgrade { 
    default upgrade; 
    ''  close; 
} 

server { 
    ... 

    location /chat/ { 
     proxy_pass http://backend; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection $connection_upgrade; 
    } 
} 

गैर-वेबसाइकिल आवश्यकताओं के लिए कनेक्शन 'अपग्रेड' है टीएस, जो भी बुरा है।

क्या आपको वास्तव में पता है कि Connection हेडर का अर्थ क्या है? आरएफसी से सिर्फ एक उद्धरण: इस फ़ील्ड में प्रत्येक कनेक्शन-टोकन के लिए, कनेक्शन से टोकन के समान नाम वाले संदेश से किसी हेडर फ़ील्ड को हटा दें।

यह कैसे बुरा हो सकता है?

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