2013-07-11 26 views
7

Merhaba node.js web sunucumu Ubuntu 12.04.2 üzerinde 80 numaralı bağlantı noktasında çalıştırmaya çalışıyorum. Bu makine temiz bir kurulum ve kurduğum tek şey, openssh-server nodejs ve ekranı. 80 numaralı bağlantı noktasında düğüm web hizmeti çalıştırdığımda, tarayıcıya gidip localhost yazabilirim ve sitemi görüntüleyeceğim. Ancak siteye farklı bir makineden erişmeye çalıştığımda zaman aşımına uğradım. Bununla birlikte makinede SSH ve PING yapabilirim. Ubuntu'yu nasıl kurabilirim, böylece node.js uygulamam web sitemi sunuyor. Site, dizüstü bilgisayarımda (windows 7) ve sitemdeki farklı bir dizüstü bilgisayarına ip adresimde eriştiğimde gayet iyi çalışıyor.Bağlantı noktası üzerinde node.js express.js'yi nasıl alabilirim

Apache veya nginx'i çalıştırmak istemiyorum. Bunu yapmak için zaten var mı?

//---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); 

GÜNCELLEME: ağ

cevap

10

root olarak çalıştırıyor musunuz kitlesel güvenlik duvarı vardır? Ya da en azından 80 numaralı bağlantı noktasını kullanma izniniz var mı? Linux sistemlerinde 1024 veya altındaki portları kullanmak için özel kullanıcı ayrıcalıklarına ihtiyacınız vardır. sudo node ...

+0

yes im running sudo node webservice.js – Jareddlc

+0

İdeal olarak, sunucunuzu bir kök kullanıcı olarak çalıştırmak istemezsiniz, bunun yerine ayrıcalıklı bir kullanıcı olarak bir güvenlik ihlali varsa (işlenmemiş bir enjeksiyon gibi) ihlal edilen kullanıcı Ev sahibinin kökü var. –

0

Başka bir bilgisayardan erişmeye mi çalışıyorsunuz? Öyleyse, locahost yerine 0.0.0.0 adresine bağlanır. Bir uygulamanın 0.0.0.0 numarasına bağlanması, bunun bilgisayarın dışından erişilebilir olması gerektiği anlamına gelir (diğer bir deyişle, tüm arabirimlere bağlanmış olması gerekir). Oysa, localhost numaralı bağlantı, hizmetin yerel olarak erişilebilir olmasını kısıtlar.

Başvurunuz içten çalıştığını denemek olduğunu doğrulamak için:
wget -O - http://127.0.0.1/ 

... web sunucusunu çalıştıran aynı bilgisayarda.

+0

detaylandırır mısınız? netstat -an | grep "LISTEN" 'üretir o tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN' – Jareddlc

+0

Ah o zaman zaten '0.0.0.0' ile bağlı gibi görünüyor. Siteye dahili olarak erişmeyi denediniz mi? Öyleyse belki de bir güvenlik duvarı sorununuz var. Sudo iptables -L -v -n' yazmayı deneyin - etkin bir güvenlik duvarınız var mı? –

+0

Ben sadece SSH üzerinden wget komutunu yaptım ve bir güvenlik duvarı varsa HTML içeriğini – Jareddlc

İlgili konular