--- title: haproxy Konfiguration auf Debian 13 (trixie) --- # haproxy haproxy ist ein Loadbalancer. Die Grundfunktion ist die, dass es Frontend-Konfigurationen gibt, auf denen haproxy Anfragen per http entgegen nimmt. Den Frontend-Konfigurationen sind Backend-Konfigurationen zugeordnet, auf die haproxy die http-Anfragen weiterleitet. In den Backend-Konfigurationen können ein oder mehrere Server hinterlegt sein. haproxy verteilt bei mehreren Servern im Backend die Anfragen auf die Server. ## Default Konfiguration Die Konfigdatei `/etc/haproxy/haproxy.cfg` enthält bereits die wichtigsten Standard-Einstellungen: ``` global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 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 ``` ## Einfache Loadbalancer Konfiguration ``` frontend TheFrontend mode http bind 192.0.2.10:80 default_backend TheBackend backend TheBackend server TheWebServer20 192.0.2.20:80 server TheWebServer30 192.0.2.30:80 ``` Das Beispiel lässt den haproxy auf der IP `192.0.2.10` auf dem Port 80 auf http-Anfragen lauschen. Eingehende Anfragen werden an die Server weitergereicht, die im Backend "TheBackend" definiert sind. Dort gibt es pro Server eine Zeile `server `. Es sind auch noch weitere Konfigurationen pro Server möglich. haproxy liefert in der Datei `/usr/share/doc/haproxy/configuration.txt.gz` eine sehr unfassende Dokumentation mit.