LoginSignup
3

More than 3 years have passed since last update.

X-Forwarded-Forは複数入りうる

Posted at

タイトルで伝えたいことの大半を消化してしまっている気もしますが、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を扱うときは注意が必要です。

外部リンク

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3