2013-01-11 4 views
5
करने के लिए

अद्यतन कनेक्ट नहीं कर सकता: नहीं 8000.EC2 Node.js आवेदन की मेजबानी - दूर से बंदरगाह


बाहर कर देता है केवल समस्या यह है कि मैं एक फ़ायरवॉल है कि कुछ बंदरगाहों अवरुद्ध पीछे था था, लेकिन संपादित करें : टी एल; डॉ: दूर से पोर्ट 9000 से कनेक्ट नहीं कर सकता है, लेकिन पोर्ट 8000 ठीक है और मैं नहीं जानता कि क्यों :(


मुझे मिल गया है यह है कि बंदरगाह पर चल रहा है आवेदन Node.js और दूसरा एक (http-proxy) पोर्ट पर चल रहा है।

मेरी मशीन पर उन्हें चल रहा है ठीक है, लेकिन मैं कुछ समस्याएं हैं जब मैं उन्हें एक सर्वर पर डाल (EC2 उदाहरण - मैं वेब कंसोल सुरक्षा समूह में बंदरगाहों को खोलने के लिए किया था [1])। एप्लिकेशन ठीक काम करता है, लेकिन मैं बाहर से प्रॉक्सी से कनेक्ट नहीं कर सकता। मैंने सर्वर पर $ telnet localhost 9000 करने की कोशिश की और यह कनेक्ट हो गया, इसलिए मुझे लगता है कि यह एक अच्छा संकेत है।

एक और चीज जो मैंने देखा है वह यह है कि यदि मैं अलग-अलग अनुप्रयोगों को चलाने की कोशिश करता हूं, तो मुझे एक ही परिणाम मिलते हैं, यानी 8000 - ठीक है, 9 000 - NOTOK: <। हालांकि, अगर मैं पोर्ट को बदलता हूं तो प्रॉक्सी 9000 से 8000 तक उपयोग करता है, यह काम करता है। और अगर मैं बंदरगाहों को स्विच करता हूं, यानी आवेदन: 9 000 और प्रॉक्सी: 8000, मैं प्रॉक्सी से कनेक्ट कर सकता हूं, लेकिन एप्लिकेशन के लिए नहीं। मैंने अन्य नंबरों की भी कोशिश की है, लेकिन यह इसे ठीक नहीं करेगा।

मुझे लगता है कि वास्तव में कुछ बेवकूफ है जिसमें एप्लिकेशन के साथ कुछ भी नहीं है और मैं याद कर रहा हूं, लेकिन मैं अपनी उंगली उस पर नहीं डाल सकता, इसलिए क्या किसी को पता है कि यह सेटअप क्यों काम नहीं करता है ?

server.js

var express = require('express.io'); 
var app = module.exports = express(); 

require('./proxy'); 

app.http().io(); 
app.listen(8000); 
// ... 

proxy.js

var httpProxy = require('http-proxy'); 
var url = require('url'); 

httpProxy.createServer(function(req, res, proxy) { 

    // ... 
    proxy.proxyRequest(req, res, { 
     host: destination.host, 
     port: 80 
    }); 

}).listen(9000); 

$ netstat -pln | grep node उत्पादन

tcp 0  0  0.0.0.0:9000 0.0.0.0:*  LISTEN 1487/node 
tcp 0  0  0.0.0.0:8000 0.0.0.0:*  LISTEN 1487/node 

सुरक्षा समूह नियम

1

+0

क्या आपने पोर्ट 9000 खोलने के लिए अपने ec2 इंस्टेंस को कॉन्फ़िगर किया था? – sheldonk

+0

@sheldonk हाँ, मैंने किया, और मुझे यकीन है (यकीन नहीं है कि मैं इसे यहां कैसे दिखा सकता हूं)। फिलहाल, मेरे पास 'iptables -F''d है और यह सब ठीक काम कर रहा है ... – andreimic

+1

आपको यह सुनिश्चित करने की भी आवश्यकता है कि आपके ईसी 2 सुरक्षा समूह में पोर्ट 9000 खुला है - यह ऐसा कुछ है जो मुझे विश्वास है कि पहले होना है उदाहरण पहली बार लॉन्च किया गया है, लेकिन यकीन नहीं है। – Joe

उत्तर

3

यह पता चला कि समस्या आवेदन या EC2 उदाहरण सेटअप से संबंधित नहीं था।

नेटवर्क का परीक्षण करते समय मैं कुछ बंदरगाहों को अवरुद्ध कर रहा था। यही कारण है कि प्रॉक्सी को बंदरगाह 8000 पर ले जा रहा था, यह ठीक काम कर रहा था, लेकिन 9000 या किसी अन्य यादृच्छिक वाले जिस पर मैंने कोशिश की थी, वह नहीं था। डी 'ओह!

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