web-dev-qa-db-ja.com

Node.jsはUbuntuの外部IPからアクセスできません

これは非常に初心者なので、ご容赦ください。私はubuntu 10.04のポート8080でnode.jsサーバーを実行しようとしています。

サーバーでのiptables -Lの結果は次のとおりです。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

そして、nmap -p 8080の結果は次のとおりです(すべてがオープンであるか、オープンである必要があるため、IPアドレスを編集しました)。

nmap 173.203.xxx.xxx -p 8080 -A

Starting Nmap 5.00 ( http://nmap.org ) at 2011-05-19 22:52 PDT
Interesting ports on xxx (173.203.xxx.xxx):
PORT     STATE  SERVICE    VERSION
8080/tcp closed http-proxy

なぜ8080は閉じていると見なされるのですか?これを追加しても役に立たなかった:

iptables -A OUTPUT -p tcp  --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp  --dport 8080 -j ACCEPT

私は本当に混乱しています。

役立つ場合に備えて、これを追加しますが、わかりません

 netstat -pan | grep 80
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN          16785/node      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16471/Apache2

Apacheのポート80から実行されている通常のWebサイトにアクセスできますが、外部からnode.jsサーバーにアクセスできません。サーバー自体からのアクセスは正常に機能します。

だから私の質問は:これをデバッグするにはどうすればいいですか?一部のポートをブロックしているiptables以外に何かありますか?それが何であるかを知るにはどうすればよいですか?

どんな助けも大歓迎です!

18
Mikael Gramont

最後のnetstat出力を追加してくれてありがとう、本当に役に立ちました。 node.jsはlocalhost IP、つまり127.0.0.1でリッスンしているため、外部からはアクセスできません。マシンのすべてのIPで接続を受け入れることができるように、0.0.0.0でリッスンするようにnode.jsを構成する必要があります。

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8080, "0.0.0.0");
console.log('Server running at http://0.0.0.0:8080/');
30

Netstatの出力によると、ポート8080はlocalhostである127.0.0.1に対してのみ開いているため、サーバー(localhost)からのアクセスは機能しますが、他の場所からのアクセスは機能しません。

正しい出力は次のようになります

0.0.0.0:8080
4
freethinker

同じ問題がありました。

私は次のことをしました

  1. Google Cloud Consoleでは、Nodejsに使用しているポートを有効にする必要があります
  2. ubuntuサーバーで同じポートを有効にするには、次のリンクを使用します https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-14- 04

  3. そして、この最後の1つが足りなかった後、ネットワーク->ファイアウォールルール-> default-allow-internal->すべてのIPアドレス0.0.0.0/0

see this image

できた

0
Tejas