Herokuでアクセス制御を実装する(PHP)
IP取得
HerokuのPHPからIPを取得するには、$_SERVER["REMOTE_ADDR"]ではなく、$_SERVER['HTTP_X_FORWARDED_FOR']を利用する。Herokuのシステムはクライアントとサーバーの間に、ロードバランサーという負荷分散システムの仕組みが導入されているらしく、$_SERVER["REMOTE_ADDR"]には、ロードバランサーのIPが代入されている。
<?php $ipAddress = $_SERVER['HTTP_X_FORWARDED_FOR'] ; echo $ipAddress . "<br>"; echo gethostbyaddr($ipAddress); ?>
.htaccess
SetEnvIf X-Forwarded-For 124.***.***.*** denyIp1 SetEnvIf X-Forwarded-For 124.***.***.*** denyIp2 order allow,deny allow from all deny from env=denyIp1 deny from env=denyIp2