我正在使用全新安装的 Centos 5.5。我已经安装并运行了 Node(我只使用 Node — 没有 apache 或 nginx。),但我不知道如何在端口 80 上创建一个简单的服务器。Node 正在运行并正在监听端口 80。我只是在使用演示应用程序:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(80, "x.x.x.x");
console.log('Server listening to port 80.');
当我访问我的 IP 时,它不起作用。我使用 ifconfig 获取了我的 ipaddress。我尝试了不同的端口。所以一定是我遗漏了什么。
我需要在服务器上配置什么才能使其正常工作?我想在不安装 apache 或 nginx 的情况下执行此操作。
路加
编辑-- 好的,我安装了 nginx 并启动了它,以查看它是否与节点相关,但我没有看到它的欢迎页面。所以这肯定与服务器有关。
我是否通过运行以下命令正确检索 IP 地址:是否配置然后阅读inet 地址在下面eth0?
答案1
您以 root 身份运行它吗?否则,您将无法绑定到端口 80。
如果将端口号更改为 1024 以上的某个值(免费),会发生什么情况?
另外,如果你指定要监听的 IP 地址,会发生什么情况,如示例中所示这里?
答案2
正如我在评论中所说,代码可以正常工作(我在 FreeBSD 上以 root 身份运行它)。
在 Linux 中,127.0.0.1(又名 localhost)绑定到接口“lo”。接口“eth0”应该有不同的 IP 地址。
停止节点;关闭 nginx(因此端口 80 可用);将 eth0 地址(因此不是 127.0.0.1)放入上述代码中;重新启动节点并尝试再次连接到另一个 IP 地址上的端口 80。
提示:使用“netstat -ltn”检查端口 80 绑定到哪个 IP 地址,然后尝试连接到该地址。
答案3
不知道这是否仍然困扰着你,但是我曾经在我的 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 上已经有另一台服务器在运行。