在端口80上设置一个纯粹的Node.js http服务器

我正在使用全新安装的Centos 5.5。 我有节点安装和工作(我只是使用节点 – 没有Apache或Nginx。),但我不知道如何使一个简单的服务器端口80.节点正在运行,正在侦听端口80.我'米只是使用演示应用程序:

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

当我访问我的IP时,它不起作用。 我使用ifconfig获得了我的ipaddress。 我试过不同的端口。 所以一定有我失踪的东西。

我需要在我的服务器上configuration什么来完成这项工作? 我想这样做,而不安装Apache或Nginx的。

卢克


编辑 – 好吧,我安装nginx并启动它,看它是否与节点有关,我没有看到它的欢迎页面。 所以它肯定与服务器有关。

我正确检索IP地址通过运行: ifconfig然后读取eth0下的inet addr

你是否以root身份运行它? 否则,您将无法绑定到端口80。

如果将端口号更改为1024以上(空闲),会发生什么情况?

另外,如果您指定IP地址进行侦听,会发生什么情况,如下例所示?

正如在我的评论中所说的代码工程(我在FreeBSD上以root身份运行它)。

在Linux 127.0.0.1(aka localhost)中绑定了“lo”接口。 接口“eth0”应该有一个不同的IP地址。
停止节点; closuresnginx(所以端口80是免费的); 把eth0-address(不是127.0.0.1)放在上面的代码中。 重新启动节点并尝试再次连接到另一个IP地址上的端口80。

提示:检查“netstat -ltn”到哪个IP地址端口80被绑定,并尝试连接到该地址。

不知道这是否还在困扰着你,但是我在Debian 6.0上遇到了同样的错误:我可以用本地浏览器(同一台机器)连接:

 links http://127.0.0.1:80 

然而,

 firefox http://[public_ip]:80 

从任何其他计算机到指定的Debian系统导致“连接被拒绝”。 所以我所做的就是在我的演示代码中省略ip设置:

 //init var http = require('http'); var port = 8080 ; var now = new Date(); // create server http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World - this is node.js\n'); res.write('Date on server: ' + now.toGMTString()); res.end('\nbye!'); }).listen(port, ""); console.log('Server running at port: ' + port); 

希望有所帮助,这对我来说。 请注意,我将端口设置更改为8080,因为有另一台服务器已经在端口80上运行。