Thank you for reading this post, don't forget to subscribe!
/etc/haproxy/haproxy.cfg
###### Описание секции global #######
global
# системный лог сервера, в который нужно отправлять предупреждения и извещения
log 127.0.0.1 local2 notice
# Запуск HAProxy в chroot-окружении
chroot /var/lib/haproxy
# пользователь и группа, от которых работает процесс
user haproxy
group haproxy
# Запуск HAProxy как сервиса
daemon
# количество одновременных подключений на внешнем интерфейсе(максимальное число одновременных подключений для каждого процесса)
maxconn 10000
# nbproc «number» (nbproc 2) — задает количество процессов. По умолчанию только один процесс будет создан
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
####### Описание секции defaults #######
defaults
# Включает в журналирование информации о трафике
log global
# Режим работы HAProxy, в http режиме происходит анализ Layer 7 трафика
mode http
# Добавляет в лог HTTP запросы, состояние сеанса и таймеры
option httplog
# Отключает логирование пустых соединений
option dontlognull
# количество повторных попыток подключения к backend-серверу после сбоя подключения.
retries 3
# перераспределение сессии в случае сбоев соединения c каким-либо backend-сервером
option redispatch
# количество одновременных подключений на внешнем интерфейсе(максимальное число одновременных подключений для каждого процесса)
maxconn 10000
# автоматически закрывать соединения после завершения передачи данных
option httpclose
# Включение X-Forwarded-For для передачи IP-адреса клиента backend-серверу
option forwardfor
# максимальное время ожидания для успешного подключения к серверу
timeout connect 5000
# когда клиент или сервер должны подтвердить приём данных или отправить данные в TCP-процессе. Рекомендуется установить для них одинаковое значение
timeout client 50000
timeout server 50000
# Включение страницу статистики
stats enable
# URL, по которому доступна статистика Haproxy
stats uri /haproxy
# Заголовок странички статистики
stats realm Haproxy\ Statistics
# HTTP-базовая авторизация логин/пароль для просмотра статистики HAProxy
stats auth admin:123456
# Автообновление статики каждые 30 секунд
stats refresh 30s
# Скрывать версию HAProxy в статистике
stats hide-version
# Отображение в статистике дополнительной информацию о параметрах
stats show-legends
stats show-node
# Определение страниц ошибок
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
####### Описание секции frontend #######
# Имя Frontend-сервера
frontend WEBLoadBalancer-HTTP
# Режим работы фронтенда
mode http
# IP-адрес и порт, на котором будет слушать запросы HApoxy
bind 10.10.1.43:80
# Имя Backend-сервера, на который необходимо направлять запросы
default_backend webcluster
####### Описание секции backend #######
# Имя Backend-сервера
backend webcluster
# Режим работы backend-сервера
mode http
# Алгоритм балансировки запросов
# roundrobin/leastconn/static-rr/uri/source/url_param
balance roundrobin
option httpclose
option forwardfor
# Проверка состояния/доступности backend-серверов
option httpchk HEAD /test.php HTTP/1.0
например,если нужно мониторить доступность виртуального хоста
option httpchk HEAD / HTTP/1.0\r\nHost:kamaok.org.us
# сервера бэкенда
# синтаксис server <name> <address>[:port] [param*]
# name - будет появляться в логах и предупреждениях.
# check - проверку состояния сервера через проверку,определенную параметром httpchk
# cookie - вставка имени сервера(name) в значение cookie
server app01 192.168.10.54:80 check
server app02 192.168.10.55:80 check
server app03 192.168.10.56:80 check
http-request add-header X-Forwarded-Proto https if { ssl_fc }