質問: Input::real_ip(); Log::error(print_r($_SERVER, true)); Log::error($ip); ``` $_SERVER には ``` [HTTP_X_FORWARDED_FOR] => xxx.xxx.xxx.xxx ``` と送信元アドレスが入っていたのですが $ip に入っていたのは ``` [REMOTE_ADDR] => yyy.yyy.yyy.yyy ``` と同じもの(ELBのアドレス)でした この記事をよむと 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ヘッダーは偽装できてしまいますので、きちんとロードバランサ以下のところからしかアクセスできないなどのネットワーク側の設定をした上で利用してくださいね 参考サイト