Это, однако, зависимо от используемого сервера. Я, например, так делаю с ngnix

Код:
//doc//19-12-2007 Получение IP адреса текущего посетителя сайта возвращает массив с адресом прокси и реальным IP
function getCurrentIpS(){
if (isset($_SERVER['HTTP_X_REAL_IP'])){
$rip=$_SERVER['HTTP_X_REAL_IP'];
}else{
$rip='empty';
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$rad=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
if (isset($rad)){
$itmp=$rip; $rip=$rad; $rad=$itmp;
}else{
$rad='empty';
}
//теперь $rad - адрес прокси или пусто
//а $rip - реальный IP юзера
return array('proxyIp'=>$rad, 'userIp'=>$rip);
}