59595


ELB 経由で接続する Fuel サーバーのコントローラの先頭に以下のようなログを仕込んだのですが

[code]

        $ip = Input::real_ip();
    
        Log::error(print_r($_SERVER, true));
        Log::error($ip);
    
[/code]

$_SERVER には

[code]

    [HTTP_X_FORWARDED_FOR] => xxx.xxx.xxx.xxx
    
[/code]

と送信元アドレスが入っていたのですが

$ip に入っていたのは

[code]

    [REMOTE_ADDR] => yyy.yyy.yyy.yyy
    
[/code]

と同じもの（ELBのアドレス）でした

<http://developer.wonderpla.net/entry/blog/engineer/FuelPHP/>  
この記事をよむと real_ip で HTTP_X_FORWARDED_FOR
に値が入ってたら優先して取得してくれるとあるんですが、使い方がまずいのでしょうか

なぜ送信元が取得できないのかなにか可能性があったら教えていただきたいです


CC BY-SA 4.0
2019-10-09T07:56:50.883
59592
2019-10-09T09:34:57.680
2019-10-09T09:34:57.680
32986
question
fuelphp amazon-elb
Fuel real_ip に HTTP_X_FORWARDED_FOR の値が入らない


fuel1.6以降セキュリティの懸念からHTTP_X_系のヘッダーの利用は  
allow_x_headers を trueに設定することで利用できるようになっています。  
デフォルトはfalseです。

そのためreal_ipの結果にHTTP_X_FORWARDED_FORに書き換えたいのであれば  
allow_x_headers を trueにしてください。

HTTP_Xヘッダーは偽装できてしまいますので、きちんとロードバランサ以下のところからしかアクセスできないなどのネットワーク側の設定をした上で利用してくださいね

参考サイト  
<http://fuelphp.jp/docs/1.7/general/configuration.html>  
<http://developer.wonderpla.net/entry/blog/engineer/FuelPHP_v1.6_RealIP/>


CC BY-SA 4.0
2019-10-09T08:41:48.407
59595
2019-10-09T08:41:48.407
22665
59592
answer