Не могу понять, скрипт раньше нормально отображал
реальный IP если открывать его, например, с включенной опцией турбо у оперы.
Сейчас уже не работает, пробовал другие, та-же проблема. Кто вкурсе в почему так.
<?php
function getUserHostAddress()
{
if (isset($_SERVER["HTTP_CLIENT_IP"])) {
return $_SERVER["HTTP_CLIENT_IP"];
} elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
return $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_X_FORWARDED"])) {
return $_SERVER["HTTP_X_FORWARDED"];
} elseif (isset($_SERVER["HTTP_FORWARDED_FOR"])) {
return $_SERVER["HTTP_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_FORWARDED"])) {
return $_SERVER["HTTP_FORWARDED"];
} elseif (isset($_SERVER["HTTP_X_REAL_IP"])) {
return $_SERVER["HTTP_X_REAL_IP"];
} else {
return $_SERVER["REMOTE_ADDR"];
}
}
echo getUserHostAddress();
<?if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) $ip = trim(explode(",",$_SERVER["HTTP_X_FORWARDED_FOR"],2)); else $ip = $_SERVER["REMOTE_ADDR"];echo $ip;?>
На другом хостинге с прокси показал Array, без прокси просто IP.
<?if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {$ips = explode(",",$_SERVER["HTTP_X_FORWARDED_FOR"],2); $ip=trim($ips[0]);} else $ip = $_SERVER["REMOTE_ADDR"];echo $ip;?>
Добавьте это в блок "location /"
proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;