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

HAProxy - несколько сайтов, несколько acl

Мы заняты настройкой HAProxy. Почти все работает, кроме настройки без нескольких сайтов с разными acl.

Что мы хотим:

Использование HAProxy с несколькими сайтами, все на одном IP, все с одними и теми же бэкэндами, но с разными блокировками IP / защитой имени пользователя и пароля.

Что у нас работает:

Получите входящий трафик на бэкэнд (с ACL для использования https вместо http).

Ситуация без хапрокси / лака:

Теперь мы используем apache для обработки acl (разрешить, запретить ip и использовать защиту имени пользователя и пароля).

Мы попытались зафиксировать это через X-Forwarded-For внутри apache. Однако сами веб-серверы больше не могут связываться друг с другом. Нам пришлось удалить разрешающую роль для подсети (балансировщик нагрузки и веб-сервер находятся в одной подсети). С этим разрешением apache не смотрит на заголовок x-forward и разрешает весь трафик. Без него веб-серверы не могут общаться друг с другом.

У кого-нибудь есть для нас пример или образ мышления?

Теперь: интернет-> брандмауэр-> apache

Что мы хотим: internet-> firewall-> haproxy (ssl offloading) -> varnish-> apache (haproxy и varnish работают на одной машине)

Есть несколько способов настроить это. Самый простой способ - это, наверное, использовать какие-нибудь ACL.

Например.:

Определение разных веб-сайтов

acl site1 hdr_end(host) site1.com
acl site2 hdr_end(host) site2.net
acl site3 hdr_end(host) site3.org

(Я использовал hrd_end в заголовке хоста, так что любой поддомен, а также поддомен без поддомена будет соответствовать. Вы, конечно, должны определить, является ли это также желаемым условием в вашем случае.)

Определение разрешенных источников для сайтов

acl allowed_site1 src 1.2.3.4/32 1.2.4.5/32
acl allowed_site2 src 2.3.4.5/32 3.4.5.0/24
acl allowed_site3 src 4.5.0.0/16

Отрицание всего, что не соответствует

http-request deny if site1 !allowed_site1
http-request deny if site2 !allowed_site2
http-request deny if site3 !allowed_site3

(В основном это читается как: отклонить запрос, если запрос предназначен для указанного сайта, но отсутствует в списке разрешенных IP-адресов)