Wie bekomme ich node.js express.js auf port 80
Hallo, ich versuche mein node.js webserver auf port 80 auf Ubuntu 12.04.2. Diese Maschine ist eine saubere Installation und das einzige, was ich installiert habe ist, openssh-server, nodejs und Bildschirm. Wenn ich den Knoten webservice auf port 80, ich kann navigieren Sie den browser und geben Sie "localhost" und ich werde meine Website. Jedoch, wenn ich versuche, auf die Website zuzugreifen von einem anderen Rechner bekomme ich eine Zeitüberschreitung. Ich kann aber SSH und PING auf die Maschine. Wie kann ich setup-ubuntu, so dass meine node.js Anwendung dient meine website. Die Website funktioniert gut, wenn ich es auf meinem laptop(windows 7) und einem anderen laptop aus auf die Website zugreifen, indem Sie meine ip-Adresse.
Ich nicht wollen, zu laufen Apache oder nginx. Gibt es trotzdem, dies zu tun?
//---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);
UPDATE: das Netzwerk hat eine massive firewall
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie als root läuft? Oder zumindest über die Berechtigung zur Verwendung von port 80? Auf Linux-Systemen benötigen Sie spezielle Benutzerrechte für die Verwendung von port 1024 oder unten. Versuchen Sie als root läuft mit
sudo node ...
Den Sie zugreifen möchten, von einem anderen computer? Wenn ja, dann binden-Adresse
0.0.0.0
stattlocahost
.Verbindlich, eine Anwendung zu
0.0.0.0
bedeutet, dass es sollte von außen zugänglich des Computers (D. H. gebunden, die auf allen Schnittstellen). In der Erwägung, dass die Bindung anlocalhost
schränkt den service zugegriffen werden kann, vor Ort.Um zu bestätigen, dass Ihre Anwendung funktioniert intern versuchen:
... auf dem gleichen computer, auf dem der Webserver ausgeführt wird.
netstat -an | grep "LISTEN "
produzierttcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
0.0.0.0
dann. So haben Sie versuchen, Zugriff auf die Website intern? Wenn ja, dann haben Sie vielleicht ein firewall-Problem. Versuchen Siesudo iptables -L -v -n
- hast du eine firewall aktiv?