Nodejs 在远程linux运行基本事例的服务器监听,本地xp访问找不到页面

Nodejs 在远程linux运行基本事例的服务器监听,本地xp访问找不到页面

代码是var express = require(‘express’) , routes = require(’./routes’) , user = require(’./routes/user’) , http = require(‘http’) , path = require(‘path’);

var app = express(); */

var express = require(‘express’) , routes = require(’./routes’) , user = require(’./routes/user’) , http = require(‘http’) , path = require(‘path’);

var app = express();

app.configure(function(){ app.set(‘port’, process.env.PORT || 3000); app.set(‘views’, __dirname + ‘/views’); app.set(‘view engine’, ‘ejs’); app.use(express.favicon()); app.use(express.logger(‘dev’)); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, ‘public’))); });

app.configure(‘development’, function(){ app.use(express.errorHandler()); });

app.get(’/’, routes.index); app.get(’/users’, user.list);

http.createServer(app).listen(app.get(‘port’), function(){ console.log("Express server listening on port " + app.get(‘port’)); });

在linux上$node app.js运行后,正常,出现Express server listening on port 3000. 在本地xp上,浏览器访问192.168.1.20:3000结果无法连接到。。。????


4 回复

问题描述

您在Linux服务器上使用Node.js和Express框架启动了一个Web服务器,并监听了3000端口。然而,当您尝试从本地XP系统通过浏览器访问192.168.1.20:3000时,却遇到了无法连接的问题。

可能的原因及解决方法

1. 网络配置问题

原因:可能是由于防火墙设置或网络配置导致外部访问被阻止。

解决方法

  • 检查防火墙设置:确保Linux服务器上的防火墙允许外部对3000端口的访问。
    sudo ufw allow 3000/tcp
    
  • 检查网络配置:确保Linux服务器的IP地址192.168.1.20可以在您的网络中被正确访问。

2. Node.js服务器绑定地址问题

原因:默认情况下,Node.js服务器只监听来自本机的请求。如果需要接受来自其他机器的请求,需要指定具体的IP地址或0.0.0.0来监听所有网络接口。

解决方法: 修改Node.js应用的监听地址,将http.createServer中的地址参数改为'0.0.0.0',这样服务器会监听所有网络接口。

http.createServer(app).listen(app.get('port'), '0.0.0.0', function() {
    console.log("Express server listening on port " + app.get('port'));
});

示例代码

下面是修改后的示例代码:

var express = require('express'),
    routes = require('./routes'),
    user = require('./routes/user'),
    http = require('http'),
    path = require('path');

var app = express();

app.configure(function() {
    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function() {
    app.use(express.errorHandler());
});

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), '0.0.0.0', function() {
    console.log("Express server listening on port " + app.get('port'));
});

总结

通过以上步骤,您可以确保Node.js服务器能够正确地接受来自外部机器的请求。如果仍然无法访问,请检查网络连接、服务器状态以及可能存在的其他安全设置。


1、首先你粘贴到代码注释掉了一部分不知道你为什么注释还不完整; 2、其次这个是指原始的app.js,不知道你其他代码有没有问题; 3、确信你的Linux开了3000端口的访问权限,这个容易忽视,特别是redhat之类的发行版,默认带了防火墙的。所以现在你linux本机测试通过了,再在你xp本机访问; 4、为什么不在xp上开发。弄好了去linux部署?你这头发胡子一把抓,哪里出问题都不知道调试。

嗯。就是linux的端口没有开。因为,我用SSH远程访问的linux。所以不知道怎么用浏览器看页面,只能在本地浏览器看

根据你的描述,问题可能出在网络配置或防火墙设置上。以下是几个常见的排查步骤:

  1. 检查服务器IP地址: 确保你使用的是服务器的正确IP地址。你可以通过 ifconfigip addr 命令查看Linux服务器的IP地址。

  2. 检查端口监听: 确认Node.js应用确实在监听指定端口。可以使用 netstat -tuln | grep 3000 检查端口是否被监听。

  3. 防火墙设置: 确保服务器防火墙允许外部访问该端口。可以使用以下命令打开3000端口(如果使用的是ufw):

    sudo ufw allow 3000
    
  4. Node.js服务绑定地址: 默认情况下,Node.js服务只监听本地回环地址(127.0.0.1)。你需要修改应用以监听所有网络接口(0.0.0.0),这样可以从任何地方访问。

    修改创建HTTP服务器的部分代码:

    http.createServer(app).listen(app.get('port'), '0.0.0.0', function() {
        console.log("Express server listening on port " + app.get('port'));
    });
    

以上步骤应该能解决你的问题。如果问题仍然存在,请检查网络连接是否正常,或者尝试从其他设备访问同一端口。

回到顶部