Re: Определение IP
Pavel V.
pavel2000 at ngs.ru
Wed Nov 14 13:16:41 UTC 2012
Здравствуйте, Евгений.
Вы писали 14 ноября 2012 г., 19:35:41:
> Здравствуйте.
> Скажите, как корректно определять ип при использовании связки nginx+php-fpm5 .
> А именно интересует, проталкивает ли энжиникс переменные
> $_SERVER['REMOTE_ADDR'];
> $_SERVER['HTTP_X_REAL_IP'];
> $_SERVER['HTTP_X_FORWARDED_FOR'];
> ?
> т.е такие переменные воопще могут существовать ?
Nginx работает в соответствии с конфигурацией. А она может говорить примерно так:
root at server:/etc/nginx/sites-available# cat default |grep -A 4 -B 1 fpm
location ~ \.php$ {
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
root at server:/etc/nginx# cat fastcgi_params |grep REMOTE_ADDR
fastcgi_param REMOTE_ADDR $remote_addr;
Т.е. переменная REMOTE_ADDR передается как переменная протокола FastCGI, и должна быть принята
php-fpm.
> Сейчас я определяю так:
> function getip(){
> if(getenv("HTTP_CLIENT_IP"))
> $ip = getenv("HTTP_CLIENT_IP");
> elseif(getenv("HTTP_X_FORWARDED_FOR"))
> $ip = getenv("HTTP_X_FORWARDED_FOR");
> else
> $ip = getenv("REMOTE_ADDR");
> return $ip;
> }
> Может быть этот способ и не целесообразный для энжиникса вовсе. может
> он для апача только акутален ?
Способ, который берет переменные HTTP_CLIENT_IP и HTTP_X_FORWARDED_FOR вместо REMOTE_ADDR, а в
особенности так, как написано в приведенной вами функции - не актуален и нецелесообразен _нигде_,
т.к. позволяет подставлять произвольный IP-адрес в результат выполнения функции.
Подробности - в гугле.
--
С уважением,
Pavel mailto:pavel2000 at ngs.ru
Подробная информация о списке рассылки nginx-ru