0

私はElastic Bean Stalkでノードjsアプリケーションを持っています。機能にsocket ioを使用することを検討しています。AWSのソケットIo ElasticBeanStalkノード

AWS elasticbeanstalkでsocket ioサポートを手動で有効にする必要がある箇所があります。具体的には、デフォルトのNGINXプロキシを使用する場合です。

私が読んだのは、デフォルトで弾力のあるbeanstalkインスタンスの前に、WebSocketを許可するように設定されていないnginxプロキシがあります。

この情報は間違いありませんか?もしそうなら、AWS EBでソケットioサポートを有効にする方法は?

答えて

1

これは正しい情報です。 WebSocket(Socket.ioなど)を動作させるには、Elastic Beanstalkのデプロイメントにいくつかの追加設定を行う必要があります。

あなたElastic Beanstalkで環境を作成すると、TCP接続を受け入れるようにロードバランサを設定する必要があり、およびノー​​ド・プロジェクトのルートディレクトリに設定ファイルを追加します:

設定ロードバランサ:

あなたのEC2コンソールにオーバー
  • ロードバランサ]タブを選択し からあなたELB環境に属しているロードバランサを選択し、リスト
  • 設定ファイルの追加TCP

に変更に

  • デフォルトエントリインスタンスプロトコルをリスナー]タブを選択します。作成し、あなたのノードプロジェクトのルートディレクトリに

    • をフォルダと呼ばれるフォルダ .ebextensions

    次の内容で新しい.ebextensionsフォルダにenable-websockets.configと呼ばれるファイルを作成します。

    container_commands: 
        enable_websockets: 
        command: | 
         sed -i '/\s*proxy_set_header\s*Connection/c \ 
           proxy_set_header Upgrade $http_upgrade;\ 
           proxy_set_header Connection "upgrade";\ 
           proxy_pass_request_headers on;\ 
           ' /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf 
    

    このファイルには、WebSocketを、アプリケーションサーバーと通信する必要があるHTTP 101アップグレードステータスコードを処理するための方法nginxのリバースプロキシ伝えます。

  • +0

    コマンドの機能を教えていただけますか? – Jocket

    +0

    私のhttp urlはうまく動作します.WS自体を使用します。しかし、私はhttpsを使用するとポーリング.doに戻ります。理由はわかります – Jocket

    +1

    @Jocketこのコマンドは、展開中にElastic Beanstalkが使用する一時的なNGINX設定ファイルに 'sed -i'に続く行を追加します。現在のところ、EBINのNGINX設定ファイルに直接アクセスする方法はないため、実行時/配備中にそれらを変更する必要があります。 httpsの問題に関しては、バランサのポート443 TCPリスナのSSL証明書を設定する必要があります。私はあなたがAWSのドキュメントでこれを行う方法の詳細を見つけることができると確信しています。これが役に立つとわかった場合は、upv​​otingを検討するか、答えを受け入れたとマークしてください! –

    関連する問題