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

Может ли haproxy балансировка нагрузки по URL-адресу реферера? (фильтрация сценария Slashdot)

У меня есть плохо работающее веб-приложение, которое будет масштабно масштабировано, чтобы справиться с массой Интернета.

Haproxy будет использоваться для отправки веб-запросов без сохранения состояния на многие серверы. Однако по-прежнему существует ограничение на трафик, который может прийти, и я хотел бы отдать приоритет подлинным пользователям.

Можно ли настроить haproxy для отправки трафика с определенного URL-адреса реферера в конкретный ящик?

Например. если в новостной статье упоминается шлюз развертывания, я могу перенаправить трафик из этой статьи на быстрый статический HTML-сайт, говоря что-то вроде «спасибо за интерес, вот некоторая информация»?

Если это возможно, возможно, кто-то сможет поделиться соответствующим фрагментом из файла конфигурации.

Да, оно может. Из документация,

hdr_dir

hdr_dir (заголовок)

Возвращает true, если один из заголовков содержит одну из строк, изолированную или разделенную косой чертой. Это используется для выполнения сопоставления имени файла или каталога и может использоваться с Referer. См. «Hdr» для получения дополнительной информации о сопоставлении заголовков.

Таким образом, вы можете проверить hdr_dir (referer), чтобы узнать, соответствует ли он определенному пути, и если это так, установить флаг, а затем отправлять трафик в различные места назначения на основе этого флага.

acl slashdot hdr_dir(referer) -i /some/path
  use_backend cluster1 if slashdot
  use backend cluster2 if !slashdot

backend cluster1
  server servera 192.168.0.50:80

backend cluster2
  server serverb 192.168.0.51:80

Не проверено.

Я наткнулся эта почта, в котором говорится об использовании такой настройки:

acl invalid_referer hdr_sub(referer) -i -f /etc/haproxy/banned.haproxy.conf
block if invalid_referer

Он должен возвращать 403 блоку реферального трафика. Вы должны иметь возможность вносить изменения в конфигурацию, чтобы обрабатывать трафик по-другому (т.е. переходить на другую поддержку)