Skip to content


Как добавить в haproxy HTTP-авторизацию

haproxy - high availability proxyHAProxy – это просто отличный load-balancer. Широко применяется для работы с HTTP-трафиком в высоконагруженных проектах. Очень гибко конфигурируется и очень шустро работает. С его помощью HTTP-трафик можно маршрутизировать и балансировать как угодно, реализуя даже самые причудливые фантазии.

Далее речь пойдёт о том, как ограничить доступ к сайту, который обслуживается haproxy. Может пригодится для всяких тестовых сред, где нежелательно, чтобы поисковые системы индексировали версию сайта, которая находится в разработке и не готова еще к production-применению. А также просто для сокрытия контента от всяких любопытных глаз.

  1. В секцию "global" добавляем список пользователей:

    1. global
    2.   userlist L1
    3.     user user1 insecure-password plain-text-pass1
    4.     user user2 insecure-password plain-text-pass2
  2. В секцию "frontend" добавляем списки контроля доступа и правила фильтрации запросов:

    1. frontend main *:80
    2.   acl auth_ok http_auth(L1)
    3.   acl ipwhitelist src 10.10.1.1 10.10.2.1
    4.   http-request allow if ipwhitelist
    5.   http-request allow if auth_ok
    6.   http-request auth unless ipwhitelist
    7.   http-request deny

    Здесь во 2-ой строке определяем ACL (access control list) с именем auth_ok, который срабатывает в случае успешной авторизации кого-либо из пользователей из определенного ранее списка с именем L1. В 3-ей строке определяем ACL с именем ipwhitelist, куда заносим IP-адреса компьютеров, при запросах с которых запрос на авторизацию выдаваться не будет. В 4-ый строке собственно безусловно разрешаем доступ компьютреам из "белого списка". В 5-ой строке разрешаем доступ только успешно авторизованным пользователям (процессинг правил дойдёт до этого места только в случае, если не сработало предыдущее правило в строке 4, так как опции http-request обрабатываются до первого срабатывания, в squid-е тоже так, кстати). В 6-ой строке говорим выдавать запрос на авторизацию для тех клиентов, кто не входит в "белый список" и кто еще не прошёл HTTP-авторизацию. 7-ая строка требует возвращать HTTP-статус 403 (Forbidden) для тех, кто не прошёл авторизацию и не входит в "белый список".

На данный момент (версия 1.5) поддерживается только basic-авторизация.

Виски Johnnie Walker из Шотландии .

Размещено в категории *nix. Теги: .

Комментариев: 1

Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.

  1. Спасибо, весьма пригодилось. Только у меня еще стояла задача по user-agent-у пришельцев фильтровать. Получилось вот так:

    acl auth_ok http_auth(L1)
    acl ipwhitelist src 10.20.20.20 127.0.0.1
    acl facebook_ua hdr_sub(user-agent) -i facebookexternalhit
    http-request allow if ipwhitelist
    http-request allow if facebook_ua
    http-request allow if auth_ok
    http-request auth unless ipwhitelist
    http-request deny

Some HTML is OK

(required)

(required, but never shared)

, или ответить через trackback.

Страница 1 из 11