1

私は Redis と Node.js を初めて使用しますが、Redis を使用して Web アプリケーションのパフォーマンスを向上させ、Node.js を使用してリアルタイム通知機能を追加したいと考えています。

ここで、両方のプロセスを提供する 1 つの EC2 インスタンスを追加し、それをエラスティック IP アドレスとそれに関連付けられたサブドメインにバインドします。ただし、Redis を実行しているマシンを信頼できない環境にさらすべきではないことを Redis の Web サイトで読みました。

http://redis.io/topics/securityから

Redis は、信頼された環境内の信頼されたクライアントによってアクセスされるように設計されています。これは、通常、Redis インスタンスをインターネットに直接公開すること、または一般に、信頼できないクライアントが Redis TCP ポートまたは UNIX ソケットに直接アクセスできる環境に公開することは良い考えではないことを意味します。

一方、websocket プロトコルをリッスンする Node.js はインターネットに公開して、Web アプリケーションがリアルタイムで対話できるようにする必要があります。

最初の質問は、Redis と Node.js にそれぞれ 2 つの EC2 インスタンスが本当に必要かということです。

私の 2 番目の質問は、既存の PHP セッションを維持し、Node.js に PHP セッションを使用してログインしたばかりのユーザーを認識させる最善の方法は何ですか?

上記のRedis Webサイトのガイドを読むまで、PHPセッションをほとんど変更し、テーブル内セッションからRedisセッションに変更します。

ありがとうございました。

4

2 に答える 2

1

メインの構成ファイル/etc/redis/redis.confに (コメントされていない場合は追加します) があるはずbind 127.0.0.1です。次に、redis を保存して再起動します。このディレクティブは、localhost からの接続のみをリッスンするようにサービスに指示します。そして、redis のインストールを外界から遠ざけるのに十分なはずです。私の記憶が正しければ、EC2 ではデフォルトで外部の世界が拒否されます。

2 番目の質問に関しては、セッション ID が 2 つの言語間で一貫して読み取られるようにする必要があります。session_id()は、php のセッションの ID を提供します。PHPSESSIDCookieを読み取るようにノードをセットアップするだけです。ブラウザでリッスンしているホスト名の下で、Cookie が node.js サービスに送信されることを確認する必要があります。phpでは、php.ini で変更するか、session_start().

于 2012-11-20T16:10:14.613 に答える
0

コメンターが言ったようにして 127.0.0.1 をリッスンしたい場合は、セキュリティを強化するために、ポートを外の世界に開かないようにすることができます。これは、セキュリティ グループ機能のため、AWS ではデフォルトで実行する必要があります。外部へのポートを開くには、セキュリティ グループに明示的に追加する必要があります。

ここでは、セキュリティ グループについてもう少し詳しく説明します。 http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-network-security.html

于 2012-11-20T16:06:36.210 に答える