Episode ini mendalami dua section paling penting dalam konfigurasi HAProxy: frontend dan backend. Kalian belajar bind address dan port, menulis ACL, memakai use_backend, membuat beberapa frontend dan backend, serta mengenal section listen untuk layanan sederhana.

Episode 3 memberi kalian Hello World yang sederhana. Sekarang waktunya membuka kekuatan penuh frontend dan backend: cara mem-bind berbagai address dan port, menulis ACL, dan mengarahkan trafik dengan use_backend.
Di akhir episode, kalian bisa membangun satu file konfigurasi dengan beberapa frontend dan backend yang melayani berbagai jenis trafik — pola yang dipakai hampir semua deployment HAProxy produksi.
Frontend adalah tempat HAProxy menerima koneksi. Setiap frontend setidaknya memiliki satu direktif bind yang menentukan address dan port. Contoh:
frontend web_front
bind *:80
bind 10.0.0.5:8080
mode http
default_backend web_backDirektif bind *:80 mendengarkan di semua interface pada port 80, sedangkan bind 10.0.0.5:8080 hanya di alamat spesifik. Kalian bisa menambahkan banyak bind dalam satu frontend.
Backend mendefinisikan server mana yang melayani trafik, lengkap dengan parameter koneksi dan kesehatan:
backend web_back
balance leastconn
option httpchk GET /healthz
server web1 10.0.0.11:80 check inter 2s
server web2 10.0.0.12:80 check inter 2s
server web3 10.0.0.13:80 check backupDirektif server web1 10.0.0.11:80 check inter 2s menambahkan server dengan health check aktif setiap 2 detik. Server dengan kata kunci backup hanya dipakai ketika semua server utama mati.
ACL (Access Control List) adalah kondisi boolean untuk mencocokkan request. Beberapa ACL paling umum:
frontend web_front
bind *:80
mode http
acl is_api path_beg /api
acl is_admin host admin.example.com
acl is_static path_end .png .jpg .css
use_backend api_back if is_api
use_backend admin_back if is_admin
use_backend static_back if is_static
default_backend web_backBaris acl is_api path_beg /api membuat ACL bernama is_api yang benar jika path dimulai dengan /api. Selanjutnya use_backend api_back if is_api mengarahkan request yang cocok ke backend tertentu.
Aturan use_backend dievaluasi dari atas ke bawah; request pertama yang cocok yang menang. Jika tidak ada yang cocok, default_backend dipakai. Urutkan aturan dari yang paling spesifik ke yang paling umum.
Sangat umum memakai dua frontend: satu untuk HTTP, satu untuk HTTPS. Meski detail SSL baru dibahas di episode 8, strukturnya bisa kalian lihat sekarang:
frontend http_front
bind *:80
mode http
default_backend web_back
frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/fullchain.pem
mode http
http-request redirect scheme https unless { ssl_fc }
default_backend web_backSetiap frontend punya bind sendiri dan bisa memakai backend yang sama atau berbeda. Nama backend tidak harus unik per frontend — justru biasanya backend dipakai bersama.
Untuk layanan yang hanya punya satu pintu dan satu kelompok server, section listen mempersingkat semuanya:
listen stats
bind *:8404
mode http
stats enable
stats uri /stats
stats refresh 10slisten stats menggabungkan frontend dan backend dalam satu blok. Di sini port 8404 melayani halaman statistik HAProxy, yang akan dibahas di episode 7.
Semakin besar konfigurasi, semakin penting disiplin:
api_back bukan b1.haproxy -c -f /etc/haproxy/haproxy.cfgJalankan haproxy -c -f /etc/haproxy/haproxy.cfg setiap kali menambah section baru, lalu reload dengan sudo systemctl reload haproxy.
Setelah reload, uji masing-masing aturan:
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/api/status
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/logo.pngPerintah curl -s -o /dev/null -w "%{http_code}\n" hanya menampilkan kode status HTTP, cukup untuk memverifikasi bahwa request diarahkan ke backend yang benar.
Episode 4 menutup fondasi konfigurasi: kalian sekarang bisa membangun frontend dan backend yang kompleks, memisahkan trafik dengan ACL dan use_backend, serta merapikan banyak section dalam satu file.
Inti yang harus dibawa pulang:
bind menentukan address dan port yang didengarkan.use_backend mengeksekusi keputusan.default_backend sebagai fallback.listen menyatukan frontend dan backend untuk layanan sederhana.haproxy -c sebelum reload.Di episode 5 selanjutnya kita akan membahas load balancing algorithms & health checks — perbedaan roundrobin, leastconn, source, dan uri, cara kerja active dan passive health check, serta konfigurasi failover dengan backup server.