您好我试图在Ubuntu 12.04.2上的端口80上运行我的node.js网络服务器。这台机器是一个干净的安装,我唯一安装的是openssh-server nodejs和screen。当我在端口80上运行节点webservice时,我可以导航到浏览器并输入localhost,我将查看我的站点。但是,当我尝试从不同的机器访问该网站时,我得到了超时。然而,我可以SSH和PING机器。如何设置ubuntu以便我的node.js应用程序服务于我的网站。当我将它托管在我的笔记本电脑(Windows 7)上时,该网站工作得很好,而另一台笔记本电脑通过我的IP地址访问该网站。
我不想运行Apache或nginx。反正有吗?
//---ExpressJS
console.log('Initializing Express...');
var express = require('express');
var app = express();
//---Middleware: Allows cross-domain requests (CORS)
var allowCrossDomain = function(req, res, next){
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
}
///---MemoryStore
//var MemoryStore = express.session.MemoryStore;
//---App config
app.configure(function() {
var pub_dir = __dirname + '/public';
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set("trust proxy", true);
app.use(express.favicon(__dirname+'/favicon.ico'));
app.use(express.compress());
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({secret: 'cogswell'}));
app.use(express.methodOverride());
app.use(allowCrossDomain);
app.use(app.router);
app.use(express.static(__dirname));
});
//---Start listening
var port = 80;
app.listen(port);
console.log('Webservice started on port: '+port);
更新:网络有一个庞大的防火墙
答案 0 :(得分:11)
你是否以root身份运行?或者至少有权使用端口80?在Linux系统上,您需要特殊的用户权限才能使用1024或更低端口。尝试使用sudo node ...
答案 1 :(得分:0)
您是否尝试从另一台计算机访问?如果是,则绑定到地址0.0.0.0
而不是locahost
。
将应用程序绑定到0.0.0.0
意味着它应该可以从计算机外部访问(即绑定在所有接口上)。绑定到localhost
会限制服务在本地可访问。
要确认您的应用程序在内部运行,请尝试:
wget -O - http://127.0.0.1/
...在运行Web服务器的同一台计算机上。