为什么 Node.js 应用程序只能从 127.0.0.1/localhost 访问?

2024-05-18

我本来打算教我的朋友介绍 Node,但是后来 我想知道为什么这个代码来自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 访问它(但仍然可以从本地主机访问) 而来自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 生成的新代码运行得很好。

我在这里缺少什么?


根据server.listen http://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback docs,

开始接受指定端口和主机名上的连接。如果 省略主机名,服务器将接受定向到的连接 任何 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');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Node.js 应用程序只能从 127.0.0.1/localhost 访问? 的相关文章

随机推荐