如何获取端口80上的node.js express.js

您好,我正尝试在Ubuntu 12.04.2的端口80上运行我的node.js web服务器。 这台机器是一个干净的安装,我已经安装的唯一的事情是openssh-server nodejs和screen。 当我在端口80上运行节点webservice时,我可以导航到浏览器并inputlocalhost,我将查看我的网站。 但是,当我尝试访问从另一台机器的网站,我超时了。 我可以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); 

更新:networking有一个巨大的防火墙

你是以root身份运行吗? 或者至less有权限使用端口80? 在Linux系统上,您需要特殊的用户权限才能使用端口1024或更低的端口。 尝试使用sudo node ...以root身份运行sudo node ...

你正试图从另一台电脑访问? 如果是,则绑定到地址0.0.0.0而不是locahost

将应用程序绑定到0.0.0.0意味着它应该可以从计算机外部访问(即绑定在所有接口上)。 绑定到localhost将服务限制在本地访问。

要确认您的应用程序在内部工作,请尝试

 wget -O - http://127.0.0.1/ 

在运行Web服务器的同一台计算机上