Вкратце: вам всегда нужно использовать $proxy = true
, если вы планируете использовать какой-то обратный прокси.Если этот параметр установлен (и trustProxyData();
включен), $this->getClientIp();
вернет правильный IP-адрес с обратным прокси.
Объяснение: даже после настройки заголовки прокси вернут HTTP_X_FORWARDED_FOR
HTTP_CLIENT_IP
в качестве IP-адреса пользователя, в то время как REMOTE_ADDR
возвращает адрес локального хоста сервера (скорее всего, 127.0.0.1).$proxy = true
проверяет именно это.Вот исходный код этой функции:
public function getClientIp($proxy = false)
{
if ($proxy) {
if ($this->server->has('HTTP_CLIENT_IP')) {
return $this->server->get('HTTP_CLIENT_IP');
} elseif (self::$trustProxy && $this->server->has('HTTP_X_FORWARDED_FOR')) {
return $this->server->get('HTTP_X_FORWARDED_FOR');
}
}
return $this->server->get('REMOTE_ADDR');
}