Я новичок в PHP, и мне дано задание по геолокации.
Я хочу получить client_ip в своем приложении php. Приложение развернуто на AWS и имеет 2 балансировщика нагрузки и веб-сервер apache.
Я пробовал следующее:
if (array_key_exists('HTTP_CLIENT_IP', $_SERVER)) {
$ipAddress = $_SERVER['HTTP_CLIENT_IP'];
} elseif (array_key_exists('HTTP_X_FORWARDED', $_SERVER)) {
$ipAddress = $_SERVER['HTTP_X_FORWARDED'];
} elseif (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
$ipAddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (array_key_exists('HTTP_FORWARDED_FOR', $_SERVER)) {
$ipAddress = $_SERVER['HTTP_FORWARDED_FOR'];
} elseif (array_key_exists('HTTP_FORWARDED', $_SERVER)) {
$ipAddress = $_SERVER['HTTP_FORWARDED'];
} elseif (array_key_exists('REMOTE_ADDR', $_SERVER)) {
$ipAddress = $_SERVER['REMOTE_ADDR'];
} else {
$ipAddress = '';
}
Я думал, что это будет работать, но это не так. Затем я посмотрел в phpinfo и обнаружил следующее:
In Headers
, X-Forwarded-For
установлено на 10.1.29.16,
$_SERVER['HTTP_X_FORWARDED_FOR']
установлен на 10.1.29.16 и
$_SERVER['REMOTE_ADDR']
- 172.17.7.173.
Все являются внутренними IP-адресами.
Может кто-нибудь подсказать мне, как я могу найти IP-адрес реального клиента?
PS:
Это приложение Symfony 4.