2015-08-23 48 views
0

我知道這個問題以前曾經有過一百萬次的問題,但即使經過長期的研究,我仍然沒有成功。我的VPS中有一個Express應用程序,由express-generator生成。我在bin/www文件做到這一點:如何在不同的IP地址啓動Express 4.x服務器?

var port = normalizePort(process.env.PORT || '80'); 
app.set('port', port); 
var server = http.createServer(app); 

server.listen(port, '0.0.0.0'); // set it to listen to all incoming IP 
server.on('error', onError); 
server.on('listening', onListening); 

和我添加一些調試線onListening(),所以我有這樣的:

function onListening() { 
    var addr = server.address(); 
    var bind = typeof addr === 'string' 
      ? 'pipe ' + addr 
      : 'port ' + addr.port; 
    debug('Listening on ' + bind); 
    console.log(addr) 
    console.log('Listening on ' + bind); 
} 

我執行node和它打印:

{ address: '0.0.0.0', family: 'IPv4', port: 80 } 
Listening on port 80 

所以,這意味着我的節點已成功啓動。但服務器保持無法訪問(只需在我的瀏覽器中加載....)。我知道這與我的防火牆無關,因爲我從Node網站編寫了一個小小的Hello World程序,並且在瀏覽器中打印了hello world。這是我的工作hello world程序:

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(80, '0.0.0.0'); 

這裏是我的netstat,節點顯然並偵聽端口80

Proto Recv-Q Send-Q Local Address   Foreign Address    
State  PID/Program name 
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  492/sshd   
tcp  0  0 0.0.0.0:25    0.0.0.0:*    LISTEN  596/master  
tcp  0  0 127.0.0.1:27017   0.0.0.0:*    LISTEN  5557/mongod  
tcp  0  0 0.0.0.0:80    0.0.0.0:*    LISTEN  9747/node  

,這裏是我的iptable

Chain INPUT (policy ACCEPT 108 packets, 10711 bytes) 
pkts bytes target  prot opt in  out  source    destination   
843 77582 ACCEPT  tcp -- any any  anywhere    anywhere    tcp dpt:ssh 
17 2030 ACCEPT  tcp -- any any  anywhere    anywhere    tcp dpt:http 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) 
pkts bytes target  prot opt in  out  source    destination   

Chain OUTPUT (policy ACCEPT 1497 packets, 191K bytes) 
pkts bytes target  prot opt in  out  source    destination 

誰能幫助?提前致謝。

+1

那麼,服務器中網卡的實際IP地址是什麼?而且,您如何嘗試聯繫node.js服務器(使用哪個URL)? – jfriend00

+0

我使用我的提供商給出的我的ip地址<115.124.92.84>來訪問它。我不知道我的網卡地址。他們使用某種虛擬化,我擁有的唯一設備是venet0,IP爲127.0.0.2。我認爲這不是問題,因爲我的Apache2在相同的地址,相同的端口(80)工作 – DennyHiu

+0

您是否有任何證據表明您的瀏覽器請求是否獲取到您的Express應用程序? – jfriend00

回答

0

好吧,經過一天的努力...還閱讀@ jfriend00和@robertklep評論。事實證明,我的防火牆設置很好,而且我的數據庫安裝存在問題,這就是爲什麼它顯示一個沒有日誌的空白屏幕,只會影響我的VPS。感謝您的評論!

相關問題