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
誰能幫助?提前致謝。
那麼,服務器中網卡的實際IP地址是什麼?而且,您如何嘗試聯繫node.js服務器(使用哪個URL)? – jfriend00
我使用我的提供商給出的我的ip地址<115.124.92.84>來訪問它。我不知道我的網卡地址。他們使用某種虛擬化,我擁有的唯一設備是venet0,IP爲127.0.0.2。我認爲這不是問題,因爲我的Apache2在相同的地址,相同的端口(80)工作 – DennyHiu
您是否有任何證據表明您的瀏覽器請求是否獲取到您的Express應用程序? – jfriend00