Laravel5.3でプロキシサーバー経由のアクセスの送信元IPを取得する。
Heroku+Laravel5.3の環境で、送信元IPの取得するミッション。
Heroku経由のRequestに対して、
$request->ip()
をしてもRequest毎に違うIPが返ってきてしまい、
herokuでアプリケーション側でIPフィルタリング的な処理ができないの…?
と一瞬悩んだのでメモ。
どうやらプロキシサーバーやロードバランサーを経由すると書き換わってしまう模様。
以下解決策。
tips
How to Configure Symfony to Work behind a Load Balancer or a Reverse Proxy (current)
なるほど setTrustedProxies()
をつかうといいらしい。
$request::setTrustedProxies([Request::ip()]); sprintf($request->ip());
とすると、
should not be called statically in ~~
となりました。 あれれと確認すると、
use Illuminate\Http\Request;
ではなく、
use Request;
とすると無事エラーもなくなり、送信元IPを取得できました。
こちらからは以上です。