Witaj Próbuję uruchomić mój węzeł.js webserver na porcie 80 na Ubuntu 12.04.2. To urządzenie jest czystą instalacją i jedyną rzeczą, którą zainstalowałem jest opensh-server nodejs i screen. Kiedy uruchomię usługę sieciową węzła na porcie 80, mogę przejść do przeglądarki i wpisać localhost, a ja obejrzę moją witrynę. Jednak, gdy próbuję uzyskać dostęp do witryny z innego komputera, upłynie limit czasu. Mogę jednak SSH i PING maszynę. Jak mogę skonfigurować Ubuntu, aby moja aplikacja node.js wyświetlała moją witrynę. Witryna działa dobrze, gdy hostuję ją na moim laptopie (Windows 7), a inny laptop uzyskuje dostęp do strony przez mój adres IP.
Nie chcę uruchamiać Apache ani nginx. Czy jest to mimo wszystko?
//---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: sieć ma masową zaporę ogniową
Odpowiedzi:
10 dla odpowiedzi № 1Czy pracujesz jako root? Lub przynajmniej mieć pozwolenie na użycie portu 80? W systemach Linux wymagane są specjalne uprawnienia użytkownika do korzystania z portu 1024 lub niższego. Spróbuj uruchomić jako root przy użyciu sudo node ...
0 dla odpowiedzi nr 2
Próbujesz uzyskać dostęp z innego komputera? Jeśli tak, to powiąż adres 0.0.0.0
zamiast locahost
.
Wiązanie wniosku do 0.0.0.0
oznacza, że powinien być dostępny spoza komputera (tj. związany na wszystkich interfejsach). Wiążące do localhost
ogranicza usługę do lokalnego dostępu.
Aby potwierdzić, że aplikacja działa wewnętrznie, spróbuj:
wget -O - http://127.0.0.1/
... na tym samym komputerze, na którym działa serwer sieciowy.