Javascript 为什么Node.js应用程序只能从127.0.0.1/localhost访问?
我想教我的朋友介绍诺德,但是 我想知道为什么nodejs.org上会有这样的代码:Javascript 为什么Node.js应用程序只能从127.0.0.1/localhost访问?,javascript,node.js,Javascript,Node.js,我想教我的朋友介绍诺德,但是 我想知道为什么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 runnin
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访问(但仍然可以从本地主机访问)
这段代码来自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生成的新代码运行良好
我在这里遗漏了什么?根据文件
开始接受指定端口和主机名上的连接。如果
如果省略主机名,服务器将接受指向的连接
任何IPv4地址(INADDR\u 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');
127.0.0.1是一个内部地址 localhost是指向它的默认主机名(本地域)(请参阅/etc/hosts) 0.0.0.0是您希望用于使其从外部可访问(从而使其公开)的地址 似乎在不提供主机名时,节点的require('http').createServer().listen()默认为0.0.0.0,而不是localhost的127.0.0.1