ポート9999にhttpsリスナーを備えたawsアプリケーションロードバランサーがあり、ec2-instanceをターゲットとしてポート9999のグループに転送しています。
ホスト名をドメインに設定してWebsocketサーバーを実行した場合api.example.com
の場合、クライアントがWebSocket接続を開こうとすると、次のようになります。
WebSocketハンドシェイク中のエラー:予期しない応答コード:502
ただし、ドメインではなく空の文字列を使用してWebSocketサーバーを構成すると、接続されます問題ありません!
このインスタンスで実行しようとしているサーバーが自動的にWebSocketサーバーを起動するため、これは問題がありますのみ WebSocketホスト名構成が提供されているため、空白の文字列はWebSocketサーバーが起動しないことを意味します!その状態を回避するためにライブラリをハックする必要はありません。だから私は疑問に思っています、なぜ世界で空白の文字列が機能するのに、ドメイン名は機能しないのですか?
Localhost、ボックスのIPなどを試しましたが、空白の文字列を除いてすべてが502になります。
私の問題は、WebSocketサーバーのホストを0.0.0.0に設定することで解決しました
ALBは、ヘルスチェックにホスト名を使用しません。したがって、サーバーがホスト名のない要求をサポートしていない場合、ヘルスチェックは失敗し、ALBへのアクセス時に5xxエラーが発生します。
サーバーがこれをサポートしていない場合、2つのオプションがあります。