2012-04-26 15 views
25

मैं अपने नोड-http-प्रॉक्सी मॉड्यूल को nginx proxy_pass मॉड्यूल के साथ प्रतिस्थापित करना चाहता हूं। क्या यह नया जारी nginx संस्करण के साथ संभव है, जैसा कि मैंने पढ़ा है, यह बॉक्स के बाहर HTTP/1.1 का समर्थन करता है। मैंने कुछ समस्याएं उस समस्या के साथ struggeling देखा, कि websockets nginx द्वारा समर्थित नहीं हैं।nginx 1.2.0 - socket.io - HTTP/1.1 - प्रॉक्सी websocket कनेक्शन

मेरे मामले में मैं पृष्ठभूमि में कई नोड परियोजनाएं चला रहा हूं और डोमेन के आधार पर पोर्ट 80 से 8000-8100 तक अपने वेबस्केट कनेक्शन को रूट करना चाहता हूं। Tcp_module एडन का उपयोग किये बिना websocket प्रॉक्सी/रिवर्स प्रॉक्सी करने का कोई मूल तरीका है?

मैंने nginx.conf में अपस्ट्रीम को proxy_passing के साथ सेट अप करने का प्रयास किया, लेकिन यदि मैं वेबसाईट पर पोर्ट 80 से कनेक्ट करने का प्रयास करता हूं, तो मुझे 502 गेटवे त्रुटि मिलती है।

कोई भी समस्या का सामना कर रहा है? क्या किसी के पास nginx + spcket.io के लिए एक कामकाजी उदाहरण है, पोर्ट 80 पर प्रॉक्सीइंग?

+0

कि ऐड-ऑन देशी तरीका है का उपयोग करना। – Dayo

+0

हां, यह संभव है। समस्या निवारण के लिए, यदि आप अपना nginx.conf शामिल करते हैं तो यह सहायक होगा। स्पष्टीकरण Matthias के लिए – nil

उत्तर

34

नहीं, यह अभी तक संभव नहीं है; nginx 1.2 1.1.x विकास शाखा से सामान शामिल करता है जिसमें वास्तव में HTTP/1.1 रिवर्स प्रॉक्सीइंग शामिल है। वेबस्क्रिप्ट कनेक्शन HTTP/1.1 "अपग्रेड" हेडर का उपयोग करके स्थापित किए जाते हैं, लेकिन तथ्य यह है कि nginx अब इस तरह के हेडर का समर्थन करता है इसका मतलब यह नहीं है कि यह websockets का समर्थन करता है (websockets एक अलग प्रोटोकॉल हैं, HTTP नहीं)। (मैं इस अपने आप 1.1.x शाखा (जो मैं अपने उद्देश्य के लिए पर्याप्त स्थिर हो पाया) का उपयोग करने की कोशिश की और यह tcp_module बिना काम नहीं करता)

WebSockets शायद 1.3.x में समर्थन किया जाएगा (http://trac.nginx.org/nginx/roadmap) ।

आपका विकल्प हैं:

  • Keep का उपयोग करके नोड http-प्रॉक्सी
  • टीसीपी मॉड्यूल के बिना
  • उपयोग nginx; socket.io websockets का उपयोग नहीं करेगा, लेकिन कुछ और (उदाहरण के लिए लंबे मतदान)
  • टीसीपी मॉड्यूल के साथ nginx: इस मामले में मुझे लगता है कि आपको इस मॉड्यूल के लिए एक अतिरिक्त बंदरगाह की आवश्यकता है (कभी भी यह कोशिश नहीं की गई)
  • कुछ और डालें एक रिवर्स प्रॉक्सी के रूप में सामने: मैं nginx और नोड के सामने हैप्रोक्सी (जो websockets का समर्थन करता है) का उपयोग करता हूं। Nginx अब बस एक स्थिर फाइलरवर के रूप में कार्य करता है, प्रॉक्सी नहीं। यदि आप अतिरिक्त कैशिंग चाहते हैं तो वार्निश एक और विकल्प है।
+0

Thx। मेरे लिए यह स्वाभाविक था कि nginx websocket proxying का समर्थन करता है अगर यह बोर्ड पर HTTP1/1 के साथ आता है। मुझे पता है कि यह HTTP प्रोटोकॉल नहीं है, लेकिन फिर भी मुझे कुछ होमवर्क करने की ज़रूरत है :) – ayk

+0

इस लेखन के अनुसार, Nginx 1.3 जारी किया गया है और websockets का समर्थन करता है। यह एक बहुत ही सरल विन्यास है [ब्लॉग के बारे में] [http://metacogni.tv/blog/2013/02/19/websockets-with-nginx-plus-ssl-also/) आशा है कि मदद करता है। – Octaflop

0

टीसीपी मॉड्यूल के साथ एनजिनएक्स के संबंध में मुझे कुछ समस्याएं आई हैं। लेकिन सबसे मुश्किल एक ईसी 2 उदाहरण पर पोर्ट 80 पर nginx के साथ अपने websockets चलाने की कोशिश कर रहा है।

मैं पूरी विन्यास वर्णित here

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