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

## プロキシとクライアントのIPアドレス <a href="#proxy--clients-ip-address" id="proxy--clients-ip-address"></a>

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

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

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

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

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

## レート制限とロードバランサー <a href="#rate-limiting--load-balancers" id="rate-limiting--load-balancers"></a>

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

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

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

![レート制限の設定オプション:インスタンスベースと分散型。インスタンスベースが選択されている状態。](https://help.aikidogov.us/_assets/fafcf9b6281c/proxy-load-balancer-settings_f66668ca-4803-4a4a-b833-ad4277b.png)

## ASP.NET Coreの追加設定 <a href="#additional-configuration-for-aspnet-core" id="additional-configuration-for-aspnet-core"></a>

[ASP.NET](http://asp.net) Coreは、追加の設定を行わない限り `x-forwarded-for` を自動的に認識しません。詳細については、[Microsoftのドキュメント](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-9.0\&preserve-view=true)を参照してください。
