2013-01-11 26 views
5

Cập nhật: Hóa ra vấn đề duy nhất là tôi đứng đằng sau một bức tường lửa chặn một số cảng, nhưng không phải 8000.EC2 tổ chức ứng dụng Node.js - không thể điều khiển từ xa kết nối với cổng


Sửa : TL; DR: không thể kết nối với cổng 9000 từ xa, nhưng cổng 8000 là ok và tôi không biết tại sao :(


tôi đã có này Node.js ứng dụng đang chạy trên cổng và một số khác (http-proxy) chạy trên cổng .

Chạy chúng trên máy tính của tôi là tốt, nhưng tôi có một số vấn đề khi tôi đặt chúng lên trên một máy chủ (EC2 dụ - Tôi đã mở các cổng trong nhóm bảo mật web console [1]). Ứng dụng hoạt động tốt, nhưng tôi không thể kết nối với proxy từ bên ngoài. Tôi đã cố gắng để $ telnet localhost 9000 trên máy chủ và nó kết nối, vì vậy tôi đoán đó là một dấu hiệu tốt.

Một điều khác mà tôi đã nhận thấy là nếu tôi cố gắng chạy riêng các ứng dụng, tôi nhận được kết quả tương tự, ví dụ: 8000 - OK, 9000 - NOTOK: <. Tuy nhiên, nếu tôi thay đổi cổng proxy sử dụng từ 9000 đến 8000, nó hoạt động. Và nếu tôi chuyển đổi các cổng, ví dụ: ứng dụng: 9000 và proxy: 8000, tôi có thể kết nối với proxy nhưng không thể kết nối với ứng dụng. Tôi cũng đã thử các con số khác, nhưng điều đó cũng không khắc phục được.

Tôi đoán có điều gì đó thực sự ngu ngốc không liên quan gì đến ứng dụng và tôi thiếu, nhưng tôi không thể đặt ngón tay lên đó, vì vậy, bất kỳ ai cũng biết tại sao thiết lập này không hoạt động ?

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 đầu ra

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 

quy tắc nhóm an ninh

1

+0

Bạn đã định cấu hình cá thể ec2 của mình để mở cổng 9000 chưa? – sheldonk

+0

@sheldonk có, tôi đã làm, và tôi chắc chắn (không chắc chắn làm thế nào tôi có thể hiển thị nó ở đây, mặc dù). Hiện tại, tôi đã 'iptables -F''d và tất cả đều hoạt động tốt ... – andreimic

+1

Bạn cũng cần đảm bảo cổng 9000 được mở trong nhóm bảo mật EC2 của bạn - đây là điều mà tôi tin rằng phải xảy ra trước đó ví dụ được khởi chạy lần đầu tiên, nhưng không chắc chắn. – Joe

Trả lời

3

Hóa ra rằng vấn đề đã không được ở tất cả liên quan đến ứng dụng hoặc thiết lập EC2.

Mạng tôi đang ở trong khi thử nghiệm điều này đã chặn một số cổng. Đây là lý do tại sao khi di chuyển proxy đến cổng 8000 nó hoạt động tốt, nhưng trên 9000 hoặc bất kỳ hình thức ngẫu nhiên nào khác mà tôi đã thử không phải là. D'oh!