Рейтинг:0

Как получить доступ к заголовку X-Forwarded-For на HAProxy за AWS Loadbalancer

флаг tl

В экземплярах HAProxy, работающих на K8S, мне нужно вручную заблокировать определенные IP-адреса на HAProxy. В настоящее время я уже не могу их зарегистрировать. Согласно документам AWS, балансировщики нагрузки устанавливают X-переадресовано-для заголовок запроса и заполните IP-адрес клиента.

При попытке зарегистрировать этот заголовок (и, следовательно, IP-адрес клиента), я всегда получаю пустые строки с HAProxy версии 2.0.18 и 2.2.20. Итак, я думаю, я неправильно настроил HAProxy. Мой конфиг выглядит так:

Глобальный
    демон
    максконн 256
    формат лога stdout raw local0

значения по умолчанию
    режим http

    опция httplog
    опция

    тайм-аут подключения 15000 мс
    таймаут клиента 150000мс
    таймаут сервера 150000мс

список пользователей global_auth
    пользователь someuser небезопасный пароль somepass

интерфейс http-in
    привязать *:80
    привязка *: 443 ssl crt /etc/certs/myapp-de.pem/cert_bundle_key.pem alpn h2, http/1.1

    опция httplog
    опция

    захват заголовка запроса X-Forwarded-For len 500
    захват заголовка запроса x-forwarded-for len 500

    log-format "Заголовки = --%hr--, --%hrl-- | Заголовки2: --%[capture.req.hdr(0)]--, --%[capture.req.hdr(1) ]--"
    журнал глобальный

    acl host_ssl_exception hdr(host) -i jobs.myapp.com

    схема перенаправления https код 301 если !{ ssl_fc } !host_ssl_exception

    метод acl is_post POST|ОПЦИИ
    acl метод is_get GET

    default_backend myapp-web

серверная часть myapp-web
    режим http
    алгоритм сжатия gzip
    тип сжатия текст/текст html/обычный текст/приложение css/приложение javascript/json
    server web1 myapp-web.myapp-${TRACK}.svc.cluster.local:80 maxconn 32 проверка файлов cookie

Все, кроме одного, удалены. HTTPS и HTTP2 включены. захватить кажется, терпит неудачу, но в настоящее время я не понимаю, почему.

Рейтинг:-1
флаг kr

Добавлять отправить-прокси на ваш сервер строка конфигурации в серверная часть myapp-web config, чтобы получить правильный IP-адрес клиента.

флаг tl
Спасибо за вашу рекомендацию. Поправьте меня, я думаю, что `send-proxy` передает заголовки, связанные с прокси, на серверную часть. Но это не то, чего мне нужно достичь. Мне нужно заблокировать определенные IP-адреса уже на HAProxy. А HAProxy получает свои запросы от установки AWS Loadbalancer. И LB AWS устанавливают заголовок «X-Forwarded-For», который я хотел бы использовать для блокировки определенных IP-адресов, прежде чем запросы попадут в мои серверные части.
Orphans avatar
флаг cn
http-запрос set-header X-Forwarder-For %[src]
Orphans avatar
флаг cn
Это должно работать, по крайней мере, в 2.2.9
флаг tl
@Orphans: это перенаправляет заголовок X-Forwarded-For на мои серверные части, а это не то, чего я хотел бы достичь. Проблема в том, что HAProxy как первая машина в очереди после классического балансировщика нагрузки AWS не может даже захватывать/логировать заголовок «X-Forwarded-For», который должен быть установлен на ELB. Я хочу фильтровать трафик уже на HAProxyy, чтобы он даже не попал в мои бэкенды, и я не понимаю, почему я не вижу этот заголовок.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.