squidとCakePHPのCake\Network\Request::clientIp

ちょっとひっかかったので、備忘録代わりに…

CakePHPで、アクセス元のIPアドレスを取得する場合、Cake\Network\Request::clientIpを使用することが多いと思います。
http://api.cakephp.org/3.3/class-Cake.Network.Request.html#_clientIp
http://api.cakephp.org/2.4/class-CakeRequest.html#_clientIp

Proxy(squid)経由でアクセスする場合、設定ファイルsquid.confの
forwarded_for off
とすると、httpヘッダの HTTP_X_FORWARDED_FOR に unknown がセットされてしまいます。
Cake\Network\Request::clientIpは、このunknownという値を取得してしまうのでよろしくないようです。

社内LANなどからの外部アクセスを、社内のPROXY Server経由でアクセスするような環境では、
forwarded_for
に、deleteもしくはtransparentを設定しておかないと、HTTP_X_FORWARDED_FOR にLAN側のIPアドレスが設定されたり、unknown となったりして、IPアドレスを正しく認識されない場合があるようです。

カテゴリー: Webコンテンツ, サーバーまわり パーマリンク