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

如何在端口80上获取node.js express.js,node.js,express,ubuntu-12.04,Node.js,Express,Ubuntu 12.04,您好,我正在Ubuntu 12.04.2的80端口上运行node.js Web服务器。这台机器是一个干净的安装,我只安装了openssh服务器nodejs和screen。当我在端口80上运行节点webservice时,我可以导航到浏览器并键入localhost,然后查看我的站点。然而,当我试图从另一台机器访问该站点时,我超时了。但是,我可以SSH和PING机器。如何设置ubuntu,使node.js应用程序为我的网站服务。当我把它放在我的笔记本电脑(Windows7)上,另一台笔记本电脑通过我的

您好,我正在Ubuntu 12.04.2的80端口上运行node.js Web服务器。这台机器是一个干净的安装,我只安装了openssh服务器nodejs和screen。当我在端口80上运行节点webservice时,我可以导航到浏览器并键入localhost,然后查看我的站点。然而,当我试图从另一台机器访问该站点时,我超时了。但是,我可以SSH和PING机器。如何设置ubuntu,使node.js应用程序为我的网站服务。当我把它放在我的笔记本电脑(Windows7)上,另一台笔记本电脑通过我的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);

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

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

您正在尝试从另一台计算机访问?如果是,则绑定到地址
0.0.0.0
,而不是
locahost

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

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

wget -O - http://127.0.0.1/

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

您能详细说明一下吗
netstat-an | grep“LISTEN”
生成
tcp 0.0.0.0:80 0.0.0.0:*LISTEN
Ah看起来已经绑定到
0.0.0
。那么,您是否尝试在内部访问该站点?如果是这样,那么您可能有防火墙问题。尝试键入
sudo iptables-L-v-n
-您是否有活动的防火墙?我刚刚通过SSH执行了wget命令,并获得了HTML内容如果是防火墙,如何修复此问题?我是linux新手,理想情况下,您不希望以root用户身份运行服务器,而是希望以特权用户身份运行服务器,以便在出现安全漏洞(如未处理的注入)时,被漏洞攻击的用户在主机上没有root。