日本語

プロキシとロードバランサーの設定

プロキシとクライアントのIPアドレス

プロキシの背後にある場合、クライアントのIPアドレスを判定するために x-forwarded-for ヘッダーを自動的に使用します。

ロードバランサーを前段に置かずにサーバーを公開している場合は、正しいIPアドレスが使用されるように、環境変数 AIKIDO_TRUST_PROXY を false に設定してください。そうしないと、誰かが上記のヘッダーを追加してIPアドレスを偽装し、レート制限を回避できてしまう可能性があります。

クライアントのIPアドレスを判定するために別のヘッダーを使用する必要がある場合は、環境変数 AIKIDO_CLIENT_IP_HEADER にそのヘッダー名を設定できます。これにより、デフォルトの x-forwarded-for ヘッダーが上書きされます:

# Example for DigitalOcean App Platform
AIKIDO_CLIENT_IP_HEADER=do-connecting-ip node app.js

Rubyでは、ヘッダー名の代わりにRack環境キーを使用してください。たとえば、Fly-Client-IP ヘッダーには HTTP_FLY_CLIENT_IP を使用します。

レート制限とロードバランサー

デフォルトでは、各Zenインスタンスはそれぞれ独自のレート制限カウンターを保持します。つまり、アプリケーションのインスタンスが3つあり、レート制限を1分あたり10回に設定した場合、理論上、顧客は30リクエスト(サーバーごとに10リクエスト)を送信できることになります。

ラウンドロビン方式のロードバランシングの場合、Aikidoはインスタンス数に基づいてレート制限を計算できます。上記の例では、顧客は設定どおり最大10リクエストまでしか送信できなくなります。

このオプションは、特定のZenアプリを表示した際の「Routes」タブ内にある「Advanced Options」で確認できます。

レート制限の設定オプション:インスタンスベースと分散型。インスタンスベースが選択されている状態。

ASP.NET Coreの追加設定

ASP.NET Coreは、追加の設定を行わない限り x-forwarded-for を自動的に認識しません。詳細については、Microsoftのドキュメントを参照してください。