Ответы пользователя по тегу HAproxy
  • Как маршрутизировать uri в haproxy?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    распределение реквестов по разным бэкендам делается во фронтенд секции (директива use_backend ), вы нам ее не показали. Скорее всего проблема где-то там.
    Для большего понимания работы ACL прочитайте секцию https://docs.haproxy.org/2.6/configuration.html#7.2 документации HAProxy
    Ответ написан
    Комментировать
  • Как сделать редирект не чувствительными к регистру в Haproxy?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    зачем редирект, не проще реврайтить на лету конвертируя к lower case, вы же все равно тем же серверам этот реквест скормите
    http-request set-path %[path,lower]
    если дополнительно хотите и кверю преобразовать в lower -
    http-request set-query %[query,lower]
    или можно вообще весь URI обработать
    http-request set-uri https://%[req.hdr(Host),lower]%[path,lower]?%[query,lower]


    если все же хотите редирект то
    http-request redirect  code 301  location https://%[hdr(host),lower]%[capture.req.uri,lower]


    примеры выше - почти все из документации HAProxy или блога HAProxy
    Ответ написан
    Комментировать
  • Каков принцип работы haproxy?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    если бэкенд сервера не резолвятся в паблик (да и в других случаях) вы можете использовать опцию ssl verify none
    в бэкенде
    server BACKEND_SERVER IP:443 ssl verify none
    таким образом при соединении будет использованo https соединение, но не будет проверяться сертификат, который отдается бэкенд сервером
    Как правило, если вы хотите проверять сертификат бэкенд сервера - хапрокси должен иметь возможность это сделать, если же бэкенды слушают на самоподписанном сертификате или внутреннем - проще ( вы же не добавите кого попало в конфиг, хотя можно и заморочиться) использовать ssl verify none
    Ответ написан
    Комментировать
  • Умеет ли haproxy в липкую балансировку траффика в зависимости от содержимого заголовка?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    https://www.haproxy.com/blog/introduction-to-hapro... - но нужно определять параметры стикнеса самому

    можно прилипнуть к кукам, которые устанавливаются из параметра квери resumableIdentifier, взяв его с помощью
    https://cbonte.github.io/haproxy-dconv/2.1/configu...
    пример прилипания к кукам https://www.haproxy.com/blog/enable-sticky-session...

    Я, в общем то, никогда не делал такого, но начал бы с документации по `stick on` :D
    Ответ написан
    Комментировать
  • Как в haproxy сделать, чтобы подставлялся для каждого домена свой сертификат?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    frontend domain.com
    bind 0.0.0.0:443 ssl crt /etc/haproxy/certs/domain.com.pem

    На 443 порту у вас все эти сайты терминейтятся, а сертификат вы указываете один.
    конкретно в вашем случае необходимо директиву crt указывать несколько раз:
    bind 0.0.0.0:443 ssl crt /etc/haproxy/certs/domain.com.pem crt  /etc/haproxy/certs/en.domain.com.pem crt  /etc/haproxy/certs/ru.domain.com.pem crt ...

    Или же - проще - указать директорию где лежат правильно приготовленные сертификаты и загрузить их все одно опцией crt /etc/haproxy/certs/
    HAProxy в алфавитном порядке будет подставлять сертификаты. Соответственно если у вас в папке лежит устаревший сертификат для en.domain.com и новый для wildcard.domain.com - загружаться будет en... пока вы его не удалите и не перезагрузите HAProxy. Сертификаты из папки подгружаются при старте HAProxy и при замене сертификатов надо перезагружать софт (особенно актуально, если вы используете загрузку из папки)
    К сожалению, вы не указали версию HAProxy и OpenSSL либы с которой собрана хапрокси.
    В зависимости от версии хапры, опенссл и наличия\отсутствия openssl либы оно может работать по разному.
    Ответ написан
    5 комментариев
  • Как сделать перенаправление в haproxy?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Общий алгоритм такой:
    1. пишете разные бэкенды для каждой версии эксчейнжа - бэкенды смотрят на свою версию
    2. пишете acl по нужным вам заголовкам
    3. пишете use_backend be_newservers if acl_newservers - на новые серверы
    default_backend old_servers

    Всегда ориентируйтесь на конфигурацию вашей версии HAProxy
    https://cbonte.github.io/haproxy-dconv/
    Ответ написан
    Комментировать
  • Как настроить ssl в haproxy для нескольких сайтов?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    в конфиге фронтенда указывайте папку с сертификатами.
    что-то вроде
    frontend fe_main
    bind *:443 ssl crt /etc/haproxy/crt
    В папке /etc/haproxy/crt должны лежать файлы сертификатов с полной цепочкой и приватным ключом (если у вас 1й работает то скорее всего вы все правильно делаете в этом пункте)
    Обработка сертификатов будет производиться в порядке сортировки файлов: если у вас два файла сертификата на один домен, но один файл назван domain.name.pem а второй www.domain.name.pem то всегда будет работать первый для сайта domain.name
    Ответ написан