タイトルで伝えたいことの大半を消化してしまっている気もしますが、HTTPヘッダのX-Forwarded-For
は、複数のIPアドレスが並ぶことがありえます。
X-Forwarded-For
とは
リバースプロキシを介してリクエストを処理する場合、プロキシされた先のサーバで見えるIPアドレスはプロキシサーバのものになってしまい、リクエスト元がわからないという事態になります。
そこで慣習的に用いられているのがX-Forwarded-For
で、リクエストの本来のIPアドレスをこのヘッダに入れます。
多段プロキシの場合
サーバの外側にクラウドサービスのロードバランサーを入れて、サーバはnginx+Pumaで構築する、というようなことをやると、Pumaへのリクエストはロードバランサーとnginxで2回プロキシされてやってくることになります。
この場合、X-Forwarded-For
の中身は<client>, <proxy1>
のように、クライアントのIPアドレスが先頭に来るように並びます。
まとめ
X-Forwarded-For
に何がどれだけ来るかはサーバ構築の状況に依存するので、複数対応を忘れていたとしても動くことも考えられますが、逆に何かでサーバを入れ替えたときに動かなくなることも考えられますので、X-Forwarded-For
を扱うときは注意が必要です。