WebSocketをAmazonWebServiceとElasticBeanstalk(ELB)で動作させようとしています。
次のようにプロキシプロトコルを設定しました: http://docs.aws.Amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html
すべてのIPについて、すべてのポートのロードバランサーおよびその他のセキュリティグループへのすべてのインバウンドトラフィックを開放しました。
また、ロードバランサーリスターナーをポート80でHTTPとして保持しました。
ポート80で接続しようとすると、WebSocket接続で次のエラーが発生します:failed:WebSocketハンドシェイク中にエラーが発生しました:予期しない応答コード:400
そして、ポート8080でのこのエラー:失敗:接続確立のエラー:net :: ERR_CONNECTION_REFUSED
提案をいただければ幸いです、私はこの時点で立ち往生しています。
ありがとう!
EC2セキュリティグループを設定した後、アプリケーションはパブリックIPで動作します。
ただし、EBURLの使用には問題があります。この問題を解決するには、EB構成を変更する必要があります。
これで、EBURLをクリックできます。
Nginxサーバーのリバースプロキシを作成する必要があります。この config file を.ebextensionsフォルダーに含めて、NginxがWSをサポートするようにすることができます。
また、EBSのロードバランサー構成で、プロトコルをHTTPからTCPに変更します。
安全なWebSocketをセットアップするには、これを参照してください blog 。
AWSは、Webソケットをサポートする新しいアプリケーションロードバランサーをリリースしました。 ELBをApplicationLoad Balancerに変更すると、問題が修正されます。
https://aws.Amazon.com/blogs/aws/new-aws-application-load-balancer/
この問題の可能な回避策も探していましたが、AWS EC2でWebSocketプログラムを開発するために使用しているプラットフォーム言語に関係なく、私の場合はNode.js nginxを使用しているため、これはすべてのサポートプラットフォームで機能するはずです。
セキュリティグループの構成
注:何かが機能していない場合は、Beanstalkアプリケーション/環境の[イベント]タブを確認して、何が問題だったかを調べてください。