Назад | Перейти на главную страницу

Лак Х-Форвард-ИП

В настоящее время у меня есть следующие настройки конфигурации:

Балансировщик нагрузки для кэшей Varnish (серверы x2) на веб-узлы (серверы x3) (Apache, PHP)

В настоящее время я установил req.http.X-Forwarded-For = client.ip в Varnish, который должен передавать IP-адрес узлам Apache. Узлы Apache также запускают mod_rpaf, который должен помочь серверу использовать X-Forward-IP вместо IP-адресов кеша Varnish.

Эта часть мне подходит, но я столкнулся с другой проблемой. В настоящее время только подсистема балансировки нагрузки принимает запросы и запрашивает кеши Varnish для страниц. Это означает, что Apache регистрирует только IP-адрес балансировщика нагрузки. Однако балансировщик нагрузки также отправляет заголовок X-Forwarded-For в запросе Varnish. Как я могу передать этот заголовок на серверы Apache?

Если вас интересует только "настоящий" IP-адрес клиента, выберите req.http.X-Forwarded-For = client.ip Полностью выкладывалась из Лака.

В этом случае Varnish не будет взаимодействовать с заголовком - он должен передать заголовок, установленный балансировщиком нагрузки, в Apache, что позволит Apache увидеть и зарегистрировать «настоящий» IP-адрес клиента.

Бегать nginx -V и убедитесь, что у вас есть --with-http_realip_module

Если да, добавьте в свой /etc/nginx/nginx.conf Раздел заголовка HTTP

set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;

Когда-то сделали service nginx restart (или /etc/init.d/nginx restart)

Это проверено на лаке 3.0.4 и 100% рабочий.

******:varnishd -V
varnishd (varnish-3.0.4 revision 9f83e8f)

Выбранный ответ не совсем правильный (по крайней мере, для Varnish 3, apache на AWS вам нужно разместить настройки varnish следующим образом:

sub vcl_recv {

  set req.backend = dsbalancer;

 if (req.restarts == 0) {
    if (req.http.x-forwarded-for) {
            set req.http.X-Forwarded-For = req.http.X-Forwarded-For;
    } else {
                set req.http.X-Forwarded-For = client.ip;
    }
  }

И

затем добавьте директиву в свой httpd.conf LogFormat, чтобы зарегистрировать ее ..