1

AWS t1.micro インスタンスで「Hello world」サーバーを実行してみました。私がしたこと:

  • ノードをawsにインストールしました
  • このようなものを書きました:


require("http").createServer(function(request, response){
      response.writeHeader(200, {"Content-Type": "text/plain"});  
        response.write("Hello World!");  
          response.end();
}).listen(8080);


- aws で実行します。node test_server.js

今、私は次のようにローカルマシンからサーバーにリクエストを送信しようとしています:

curl http://NAME:8080ここで、NAME は aws コンソールからのパブリック DNS 名ですが、何も起こりません。私は何を忘れますか?または私が間違ったことをした

ある種のチュートリアルを探してみましたが、ローカル マシンでこれを実行する方法や、Ngnx のセットアップを提案する方法が説明されています。しかし、私はミニマリストの例を探します

4

2 に答える 2

3

インスタンスへの 8080 ポートのインバウンド トラフィックを承認するよう Amazon に指示する必要があります。ステップバイステップの手順については、ドキュメントを参照してください。

要するに:

  • Amazon EC2 コンソールに移動し、[インスタンス] をクリックして、[セキュリティ グループ]設定ペインを開きます
  • 0.0.0.0/0ポート 8080 で任意の IP ( ) からのインバウンド トラフィックを承認する新しいルールを追加します。
  • 変更を適用します。これで、Node Web サーバーは HTTP リクエストを処理できるようになります。
于 2013-11-15T10:04:09.460 に答える
2

@Paulは正しいですが、それは私にとって解決策の一部にすぎません。ローカルマシンからまだ「接続が拒否されました」(リモートCURLは問題ありませんでした)。したがって、パズルの別の部分は、Unix ファイアウォール (さらに AWS セキュリティ グループの構成) をオフにすることで解決されました。つまり、iptables です。

CentOS を実行していますか? これを試して:

$ service iptables save
$ service iptables stop
$ chkconfig iptables off

もちろん、ファイアウォールをオフにして AWS コンソール セキュリティ グループを開くことは、長期的には良い考えではありません。適切な方法は、iptable を使用し、インバウンドとアウトバウンド用にポート 80 を開き、80 を Node.js ポート (3000 または 1337 など) に再ルーティングすることです。

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
$ sudo iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Nginx を使用してリダイレクトを行うこともできます。多くのユーザーが 1 つのリソース/ページにアクセスしている場合、Node.js プロセスの負荷が劇的に減少するため、Varnish Cache も同様に優れたツールです。

AWS と Node.js に関する詳細情報:

http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

Linux で iptables を無効にする方法:

http://www.cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/

CentOS と Fedora で同じ:

http://www.cyberciti.biz/faq/disable-linux-firewall-under-centos-rhel-fedora/

于 2014-05-03T04:40:25.250 に答える