2017-09-04 11 views
0

私はawsクラウドにチャットバックエンドアプリケーションを開発しています。チャットバックエンドのスケーラブルなアーキテクチャを構築するためには、接続を開いている人が本物であることを確認する必要があります。 私のアプリがプロキシ経由でデータを送信しないようにするには?

はチャットがofcourseのサーバーとオープンすべての時間を tcp接続を維持する必要があることをより正確にするために、私は次のような問題があります。

1 - バックエンドは、ロードバランサelastic load balancerを持っています。

2 - tcpクライアントアプリケーションとバックエンドサーバー間の接続は、開いたままにしておく必要があります。つまり、アプリケーションはロードバランサelbではなくサーバとの接続を維持する必要があります。

3 - elbロードバランサは、以前に接続したアプリケーションと同じサーバーにセッションテーブルsticky sessionを接続してロードする必要があります。 残念ながら、ロードバランサはl4l7のレイヤのみをサポートしていますので、私はl3レイヤを使用する必要があると思います。

ここでの主な問題は、ほとんどの人がプロキシサーバーの背後で動作するため、接続が維持されないためです。tcpという接続はプロキシではなくプロキシで行われるためです。

これを解決する方法はわかりませんが、今知っている唯一の解決策は次のとおりです。 tcp接続がプロキシではなく、プロキシではないことを確認するために、私はそれをしますか?

プロキシの背後で動作させる方法があり、バックエンドで解決策を講じる方法があれば教えてください。

答えて

2

私はあなたの懸念を理解していません。 Webソケットを使用している場合、ほとんどのプロキシはこのタイプの通信を許可しますが、タイムアウトなどがあると問題を引き起こす可能性があります。

誰かがプロキシの背後にいるかどうかを制御することはできません。多くの場合、プロキシは完全に透過的なので、ネットワークホップのすべてを調べなければ、そこにあることを知る方法がありません。これについてさらに読むことができます。あなたが認証メカニズムとしてIPアドレスを使用しようとしている場合は、私が代わりに標準の認証メカニズムを使用することをお勧め

https://www.infoq.com/articles/Web-Sockets-Proxy-Servers

- 良いスタートがこの記事です。認証されたら、セッションCookie、JWT、または別の標準セッション管理ソリューションを使用してセッションを管理する必要があります。 JWTは通常はステートレス(セッションを使用しません)ですが、セッションタイプのデータに対するユーザの認証に使用できます。

+0

okそれでは、どのようにiサーバをTCP接続する必要があるチャットアプリを作ることができますか? –

+1

プロキシサーバーは接続を行い、実際のアプリケーションは作成しません –

+0

アプリケーションは接続を続けます。プロキシサーバー経由でルーティングするだけで済みます。 – BryceH

関連する問題