【问题标题】:Why is Node.js app accessible only from 127.0.0.1/localhost?为什么 Node.js 应用程序只能从 127.0.0.1/localhost 访问?
【发布时间】:2016-01-15 15:47:53
【问题描述】:

我打算教我的朋友一个节点介绍,但后来 我想知道为什么这个来自 nodejs.org 的代码:

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

当托管时,它不能从公共 ip 访问(尽管它仍然可以从 localhost 访问) 而来自 express.js 的这段代码:

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

var app = express();

// all environments
app.set('port', process.env.PORT || 80);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  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'));
});

确实如此。请帮我修改nodejs主页上的基本代码,以便可以从公共IP访问它,这样我就可以用一种非常基本的方式向我的朋友演示它。 express.js 生成的新代码运行良好。

我在这里错过了什么?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    根据server.listen 文档,

    开始接受指定端口和主机名上的连接。如果 省略主机名,服务器将接受定向到的连接 任何 IPv4 地址 (INADDR_ANY)。

    要使其接受来自所有 ip (0.0.0.0) 的连接,请将其更改为如下所示

    }).listen(80); // No explicit ip, defaults to all ips 0.0.0.0
    console.log('Server running in port 80');
    

    【讨论】:

      【解决方案2】:

      127.0.0.1 是内部地址

      localhost 是指向它的默认主机名(本地域)(参见 /etc/hosts)

      0.0.0.0 是您要用于使其从外部访问的地址(从而使其公开)

      似乎当您不提供主机名时,节点的 require('http').createServer().listen() 默认为 0.0.0.0 而不是 localhost 的 127.0.0.1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-31
        • 1970-01-01
        • 2013-11-15
        相关资源
        最近更新 更多