为什么Node.js应用程序只能从127.0.0.1/localhost访问? [英] Why is Node.js app accessible only from 127.0.0.1/localhost?

查看:1163
本文介绍了为什么Node.js应用程序只能从127.0.0.1/localhost访问?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  var http = require('http'); 
http.createServer(函数(req,res){
res.writeHead(200,{'Content-Type':'text / plain'});
res.end('Hello World \ n');
})。listen(80,'127.0.0.1');
console.log('运行于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();

//所有环境
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')));

//仅开发
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生成的新代码工作正常。



我在这里缺少什么?

解决方案

根据 server.listen docs,


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


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



<$ p $ 。p> })听(80); //没有显式的ip,默认为所有ips 0.0.0.0
console.log('服务器在端口80中运行');


I was about teaching my friend an intro to node but then I wonder why this code from 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/');

when hosted, it doesn't accessible from public ip (it's still accessible from localhost though) while this code from 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'));
});

does. Please help me modify the basic code the one from nodejs's homepage so that it become accessible from public ip so I can demonstrate it to my friend in a very basic way. The fresh code generated by express.js worked just fine.

What am I missing here?

解决方案

As per the server.listen docs,

Begin accepting connections on the specified port and hostname. If the hostname is omitted, the server will accept connections directed to any IPv4 address (INADDR_ANY).

To make it accept connections from all ips (0.0.0.0), change it to read like this

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

这篇关于为什么Node.js应用程序只能从127.0.0.1/localhost访问?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆