Amazon EC2に新しいUbuntuインスタンスをセットアップしました。このインスタンスにはノードWebサーバーがあります。 Webサイトにアクセスしようとすると、ブラウザーでエラーが発生します。エラーは:
Connect: Connection refused
マシンにpingできることを確認しました。しかし、ブラウザにhttp://[ipAddress]
またはhttp://[ipAddress]:8080
と入力すると、上記のエラーが発生します。ノードWebサーバーを起動すると、次のように表示されます。
Server listening on 8080
次のコマンドを使用してポート転送を実装しました。
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80
-j REDIRECT --to-port 8080
次のコマンドを使用してファイアウォールを適切に開いたと思います。
iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
行き詰まっています。 「接続が拒否されました」という理由がわかりません。誰かが提供できるヘルプや洞察を心から感謝します。現時点では、このメッセージがUbuntuから送信されたものか、Nodeサーバーから送信されたものかはわかりません。それ以上に、この問題を追跡する方法に慣れていません。
ご協力ありがとうございました。私にとっては大きな出来事です。
サーバーは[ipAddress]:8080
をリッスンしていない可能性が高いです。おそらくlocalhost:8080のみをリッスンしています。 netstat を使用してこれを確認できます。すべての/適切なIPアドレスをリッスンするようにサーバーを構成する必要があります。これを行う方法は間違いなくドキュメントに記載されています。
私のExpressJSアプリでもまったく同じ問題がありましたが、それはあなたの再ルーティングではありません。 server.jsファイルのHost変数がlocalhost
に設定されていることに気づくまで、長い間iptablesとnetstatをハッキングしていました。ここに私の非稼働コードがあります:
app.listen(PORT, 'localhost', function(err) {
if (err) return console.log(err);
console.log("Listening at http://localhost:%s", PORT);
});
ホスト変数を追加するだけです
var Host = 'actual_server_goes_here...';
そして、これを行います:
app.listen(PORT, Host, function(err) {
if (err) return console.log(err);
console.log("Listening at http://%s:%s", Host, PORT);
});
お役に立てれば :)
serverAddressと入力して、適切なネットワークインターフェイスでリッスンするようにします。
http.createServer(function (req, rsp) () {
...
}).listen(serverPort, serverAddress);
また、Amazon EC2を使用して、Management ConsoleでマシンインスタンスにSecurity Groupが接続されており、そのポートでのアクセスを許可していることを確認してください。 (これらのセキュリティグループでは、EC2-ファイアウォールを構成できます。)
あなたはそれを聞くためにあなたのプライベートIPを使用する必要があります。インスタンスのプライベートIPアドレス(インスタンスに複数のネットワークインターフェースがある場合、複数のIPアドレスがリストされます)。インスタンスごとにEC2管理コンソールに表示されます