Node JS在服务器上无法监听1337端口

5
我正在尝试打开由Google托管的特定lamp服务器上的端口,并通过ssh与服务器连接。我已经按照this链接配置了nvm和最新的Node JS(v0.12.5)。安装后,我在“server.js”文件中使用了这个演示代码,并使用命令“node server.js”,看起来Node JS正在运行,在服务器控制台上显示“Server ready”消息。现在的问题是,当我使用“netstat -n”检查打开的端口时,我没有看到任何1337端口开放,它应该是开放的。我还尝试使用“serverIPaddress:1337”通过浏览器连接,但我得到“连接…”消息,然后什么也没有发生。你有任何想法吗?我也对要放在server.js文件中的服务器IP地址(localhost:127.0.0.1)或(globalIPaddress)感到困惑。附上server.js文件脚本。

var http = require('http');
http.createServer(function(req, res) {
  res.writeHead(200, {
    'Content-Type': 'text/plain'
  });
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server ready');


你需要在远程机器上向全世界打开1337端口。 - Explosion Pills
4个回答

7

2
你有两个问题:
1) "127,0,0,1" 表示 "本地回环地址",如果你想让远程客户端连接,那么它是不合适的。
2) 端口 1337 可能(也可能不)被防火墙封锁。看起来它没有开放。
建议更改:
var http = require('http');
http.createServer(function(req, res) {
  res.writeHead(200, {
    'Content-Type': 'text/plain'
  });
  res.end('Hello World\n');
}).listen(80);
console.log('Server ready');

假设您的远程服务器没有其他Web服务器绑定到端口80。如果您修改后的程序出现“端口正在使用”的错误,请尝试使用端口8080或8888。

端口80需要root权限。 - robertklep
@Pranav Nemade - 就像我说的:1)只使用端口号调用“listen()”。不要指定127,0,0,1,除非您想侦听一个特定的IP地址。2)尝试端口80。首先尝试它。防火墙上可能打开了端口“80”,大多数远程客户端(特别是那些使用酒店和机场的Wifi的客户端)应该能够连接。希望这有所帮助-祝你好运! - paulsm4

0

只需将端口号放置在侦听上,而不是同时使用端口号和IP地址。

var http = require('http');
http.createServer(function(req, res) {
  res.writeHead(200, {
    'Content-Type': 'text/plain'
  });
  res.end('Hello World\n');
}).listen(1337);
console.log('Server ready');

如果你想使用IP地址,那么服务器只能通过本地127.0.0.1:1337访问,你将无法使用localhost:1337访问它。


0

是的,我已经尝试过多次向服务器发送请求,但有时候会失败 - 如果你使用:

"lsof -P -iTCP | grep LISTEN"

您可以在-bash中检查进程。

然后确定有多少个端口正在工作。您可以使用以下命令杀死进程:

"kill -9 process_id"

"端口正在使用"表示该端口正在被其他应用程序使用或正在其上运行程序。

例如:

iTunes有时不允许您在相同的端口发送数据。

因此最好退出该应用程序,稍后再尝试发送数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接