[英]Remote node.js http server doesnt start or fails to listen
我在我的Windows機器上運行了一些node.js測試,一切運行良好。 現在我在我的debian遠程機器上安裝了節點,我試圖運行一個簡單的http服務器:
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
我使用SSH執行: node server.js
現在當我轉到我的服務器ip http://xxx.xxx.22.127:8888時服務器超時。
我究竟做錯了什么? 我測試了一些更簡單的腳本,node.js似乎安裝正確。 它可能是防火牆問題,或者我應該添加host-ip或sommit?
附帶問題:當我在putty中運行node server.js
我不能再輸入時,如何返回命令行? :)
編輯:我的iptables信息
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:5900
ACCEPT tcp -- anywhere anywhere tcp dpt:8888
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
可能存在軟件防火牆(例如iptables
)或硬件防火牆,它阻止了對8888
請求被接收。 解決此問題的唯一方法是深入了解您的服務器配置/網絡架構以追蹤問題。 例如,如果您使用iptables查看當前強制執行的規則,則可以使用iptables -L
。
可能還有另一個應用程序已經在8888
監聽了,但是我認為這會引發錯誤而不是像這樣失敗,所以我懷疑這是問題所在。 檢查這個的一種方法是通過netstat -a
。
毋庸置疑,我說你得到的代碼應該可以正常工作,而且你的服務器設置存在問題導致了這個問題。
側回答:使用nohup
和&
像這樣; nohup node server.js &
,雖然你應該看看如何forever
安裝一個模塊,然后forever start server.js
使用forever start server.js
; forever
有一個額外的好處,如果它崩潰自動重新啟動你的節點進程。
我究竟做錯了什么? 我測試了一些更簡單的腳本,node.js似乎安裝正確。 它可能是防火牆問題,或者我應該添加host-ip或sommit?
我認為腳本本身並沒有錯。 嘗試使用telnet
進行調試。
附帶問題:當我在putty中運行節點server.js我不能再輸入時,如何返回命令行? :)
node server.js &
(也見man nohup
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.