Мои клиенты http запрашивают go через прокси-сервер Squid для подключения к внутреннему apache веб-серверу. Сценарий php в бэкэнд-веб-сервере получает реальный IP-адрес клиента, как показано ниже:
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip_address = $_SERVER['HTTP_CLIENT_IP'];
}
//whether ip is from proxy
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
//whether ip is from remote address
else
{
$ip_address = $_SERVER['REMOTE_ADDR'];
}
Я установил прокси-сервер Squid со следующими параметрами, чтобы получить реальные IP-адреса клиентов:
via on
request_header_access X-Forwarded-For allow all
forwarded_for on
follow_x_forwarded_for allow localhost
Я ожидал получить реальные ips клиентов через параметр $ _SERVER ['HTTP_X_FORWARDED_FOR']. Однако, когда я проверял значения в клиентских браузерах, только remote_addr имеет значения:
- http_client_ip: undefined
- http_x_forwarded_for: undefined
- remote_addr => прокси-сервер squid IP-адрес
Я подозреваю, что проблема может быть обнаружена в моей настройке прокси-сервера squid, но я не знаю, какие параметры конфигурации Squid мне следует изменить. Ценю вашу помощь заранее.
С уважением
Стив