更新:原來,唯一的問題是,我是阻止某些端口在防火牆後面,而不是8000EC2託管Node.js應用程式 - 無法遠程連接到端口
編輯:TL; DR:無法連接到端口9000進行遠程,但端口8000是確定的,我不知道爲什麼:(
我有了這個Node.js的是對端口運行的應用程序和另一個(http-proxy)在端口上運行。
運行它們在我的機器上是好的,但我有一些問題,當我把他們的服務器上(EC2實例 - 我做的Web控制檯安全組在打開端口[1])。該應用程序工作正常,但我無法從外部連接到代理。我試圖在服務器上連接$ telnet localhost 9000
,所以我想這是個好兆頭。
我注意到的另一件事是,如果我嘗試單獨運行應用程序,我會得到相同的結果,即:8000 - OK,9000 - NOTOK:<。 但是,如果我更改端口代理使用從9000到8000,它的工作。如果我切換端口,即應用程序:9000和代理: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
安全組規則
您是否配置ec2實例使端口9000打開? – sheldonk
@sheldonk是的,我做了,我確定(不知道我怎麼能在這裏展示它,雖然)。 此刻,我已經'iptables -F''d,它的工作正常...... – andreimic
您還需要確保端口9000在您的EC2安全組中處於打開狀態 - 這是我相信之前必須發生的事情該實例第一次啓動,但不確定。 – Joe