global
log /dev/haproxy/log local0 # см https://en.wikipedia.org/wiki/Syslog#Facility
log /dev/haproxy/log local1 notice # notice - уровень ошибки. весь список: emerg, alert, crit, err, warning, notice, info, debug
chroot /var/lib/haproxy # изменяем директорию выполнения для защиты от атак. папка пуста и нет прав.
maxconn 256 # максимальное количество одновременных подключений.
stats socket /run/haproxy/admin.sock mode 660 level admin # связывает сокет с admin.sock
stats timeout 30s
# Неизменяемые настройки HAPROXY
user haproxy
group haproxy
daemon # Запустить процесс в фоновом режиме
defaults
log global
mode http
option httplog
option dontlognull
# Таймауты
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
retries 3 # кол-во попыток до того, как понизить статус сервера
# Статистика
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /haproxy #здесь указываем ссылку на страницу статистики
stats auth stat:stat
option httpchk HEAD / HTTP/1.0
# Настройки доступа
option redispatch # Позволит пользователям пройти к другому серверу если сервер, на который ссылаются их куки, не работает
balance source # алгоритм выбора сервера (наименее загруженный по порядку)
frontend frontend_pam
bind *:443 ssl crt /etc/ssl/certs/haproxy.domain.local.pem # настройка интерфейса фронтенда с указанием пути к сертификату этого сервера
option forwardfor # передать оригинальный ip адрес клиента серверу
acl url_core path_beg /pam/core
use_backend backend_api if url_core
acl url_idp path_beg /pam/idp
use_backend backend_idp if url_idp
acl url_mc path_beg /pam/mc
use_backend backend_mc if url_mc
acl url_uc path_beg /pam/uc
use_backend backend_uc if url_uc
backend backend_api
option prefer-last-server # попытка повторно использовать тоже соединение к серверу
option httpchk GET /pam/core/health # проверка доступности приложения PAM Core
stick-table type string len 35 size 1m expire 1d # Настройка, необходимая для связи gateway и core, иначе просмотр видеопотока работать не будет
stick on path,word(3,/) if { path_beg -i /api/screencast/ } # Настройка, необходимая для связи gateway и core, иначе просмотр видеопотока работать не будет
server PAM1 192.168.1.1:443 ssl verify none check inter 1000ms5000ms fall 3
server PAM2 192.168.1.2:443 ssl verify none check inter 1000ms5000ms fall 3
backend backend_idp
option prefer-last-server # попытка повторно использовать тоже соединение к серверу
option httpchk GET /pam/idp/ # проверка доступности приложения PAM Core
server PAM1 192.168.1.1:443 ssl verify none check inter 1000ms5000ms fall 3
server PAM2 192.168.1.2:443 ssl verify none check inter 1000ms5000ms fall 3
backend backend_mc
option prefer-last-server # попытка повторно использовать тоже соединение к серверу
option httpchk GET /pam/mc/ # проверка доступности приложения PAM Core
server PAM1 192.168.1.1:443 ssl verify none check inter 5000ms
server PAM2 192.168.1.2:443 ssl verify none check inter 5000ms
backend backend_uc
option prefer-last-server # попытка повторно использовать тоже соединение к серверу
option httpchk GET /pam/uc/ # проверка доступности приложения PAM Core
server PAM1 192.168.1.1:443 ssl verify none check inter 5000ms
server PAM2 192.168.1.2:443 ssl verify none check inter 5000ms
|