Настроить правило TCP ⟶ Proxy

Чтобы видеть реальные IP-адреса клиентов, которые обращаются к балансировщику нагрузки, можно создать правило TCP ⟶ Proxy и использовать Proxy Protocol.

  1. Создайте балансировщик нагрузки с правилами:

    • для HTTP. Укажите для балансировщика нагрузки: протокол — TCP, порт — 80; для серверов: протокол — PROXY, порт — 80;
    • для HTTPS. Укажите для балансировщика нагрузки: протокол — TCP, порт — 443; для серверов: протокол — PROXY, порт — 443.

    Если вам не требуется балансировка HTTP или HTTPS — можно не настраивать какое-либо из этих правил в зависимости от решаемых задач.

  2. Включите поддержку директивы proxy_protocol в конфигурационном файле nginx.conf на серверах, подробнее в официальной документации nginx.

    Пример nginx.conf:

    server {
    server_name localhost;
        
    # Работа с директивой proxy_protocol возможна только в связке с HAProxy.
    # Для прямого доступа директиву нужно отключить.
    listen 443 ssl default_server proxy_protocol;
        
    ssl_certificate      /etc/nginx/ssl/public.example.com.pem;
    ssl_certificate_key  /etc/nginx/ssl/public.example.com.key;
        
    # Адрес HAProxy — мы рекомендуем указывать CIDR
    set_real_ip_from 192.168.1.0/24;
    real_ip_header proxy_protocol;
        
    root /usr/share/nginx/html;
    index index.html index.htm;
        
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
        
    location ~ /\.ht {
        deny all;
    }
    }

    Использование LVS и метода Direct Server Return не поддерживается согласно политике безопасности Облачной платформы.