Перейти к содержимому
Skip to content
← Все статьи

Заголовок X-Forwarded-For: определение IP клиента за прокси

Когда запрос проходит через прокси, балансировщики или CDN, реальный IP клиента теряется — сервер видит IP прокси. Заголовок X-Forwarded-For (XFF) решает проблему, передавая реальный IP через цепочку прокси.

Как работает X-Forwarded-For

Каждый прокси добавляет IP предыдущего хопа:

Клиент (203.0.113.50) → Прокси1 (10.0.0.1) → Прокси2 (10.0.0.2) → Сервер

X-Forwarded-For: 203.0.113.50, 10.0.0.1

Левый IP — оригинальный клиент. Каждый последующий — прокси в цепочке.

Связанные заголовки

Почему это важно

Конфигурация серверов

Nginx

set_real_ip_from 10.0.0.0/8;
set_real_ip_from 172.16.0.0/12;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

Apache

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 10.0.0.0/8
RemoteIPTrustedProxy 172.16.0.0/12

PHP

function getClientIP(): string {
    $trusted = ['10.0.0.0/8', '172.16.0.0/12'];
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = array_map('trim', explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
        foreach (array_reverse($ips) as $ip) {
            if (!isTrustedProxy($ip, $trusted)) return $ip;
        }
    }
    return $_SERVER['REMOTE_ADDR'];
}

Безопасность: проблема доверия

XFF легко подделать. Любой клиент может отправить:

X-Forwarded-For: 1.2.3.4

Если сервер доверяет левому IP — атакующий может выдать себя за любой адрес. Решение: доверяйте только записям от известных прокси.

Правильный алгоритм разбора

  1. Начните с правого IP в X-Forwarded-For
  2. Проверьте — это доверенный прокси?
  3. Если да — двигайтесь влево
  4. Первый недоверенный IP — реальный клиент
  5. Никогда не доверяйте левому IP вслепую

Типичные ошибки

Cloudflare

Cloudflare предоставляет CF-Connecting-IP с проверенным IP клиента. Надёжнее XFF, так как контролируется Cloudflare.

Заключение

X-Forwarded-For необходим за прокси, но требует аккуратной обработки. Настройте цепочку доверия, парсите справа налево и никогда не доверяйте левому IP вслепую.

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: HTTP
HTTP
HTTP заголовки: полное руководство
10.03.2025 · 46 просм.
HTTP
HTTP коды ответов: полный справочник с примерами
10.03.2025 · 34 просм.
HTTP
HTTP/2 и HTTP/3: чем отличаются и что быстрее
13.03.2026 · 15 просм.
HTTP
Server-Sent Events vs WebSockets: выбор технологии реального времени
16.03.2026 · 11 просм.