InfraLab
HAPROXY40 cmd

HAProxy チート集

HAProxy の global/defaults、frontend/backend、負荷分散、ヘルスチェック、TLS 終端、ACL 分岐、stats、Runtime API をまとめた運用チート集。

更新日
2026-05-14
参照範囲
公式ドキュメント / man page / 主要ベンダーCLI
対象実装
主要 Linux / BSD / ネットワーク機器 CLI の一般的な実装
免責
OS とバージョン差分は実環境で確認してください。

40 / 40

CommandDescriptionExampleCopy
global maxconnプロセス全体の最大接続数を設定する。global log /dev/log local0 maxconn 20000
global stats socketRuntime API 用 UNIX ソケットを有効化する。global stats socket /var/run/haproxy.sock mode 660 level admin expose-fd listeners
defaults mode httpHTTP 用の既定値を定義する。defaults mode http option httplog timeout connect 5s timeout client 30s timeout server 30s
option dontlognull空接続をログに出さない。defaults option dontlognull
option redispatch接続失敗時に別サーバへ再割当する。defaults option redispatch retries 3
frontend http-inHTTP 入口を定義する。frontend http-in bind *:80 default_backend web_back
frontend https-inHTTPS 入口を定義する。frontend https-in bind *:443 ssl crt /etc/haproxy/cert.pem alpn h2,http/1.1 default_backend web_back
http-request redirect scheme httpsHTTP を HTTPS へリダイレクトする。frontend http-in bind *:80 http-request redirect scheme https code 301 unless { ssl_fc }
http-request set-header X-Forwarded-Proto上流へ元スキームを渡す。http-request set-header X-Forwarded-Proto https if { ssl_fc }
capture request header HostHost ヘッダをログ用にキャプチャする。capture request header Host len 64
backend web_backバックエンドサーバ群を定義する。backend web_back server web1 10.0.1.10:8080 check server web2 10.0.1.11:8080 check
server check fall riseヘルスチェックの失敗/復帰回数を指定する。server web1 10.0.1.10:8080 check inter 2s fall 3 rise 2
backup server通常時は使わないバックアップサーバを置く。server web-dr 10.0.9.10:8080 check backup
balance roundrobinラウンドロビンで均等に振り分ける。backend web_back balance roundrobin
balance leastconn接続数が少ないサーバへ振り分ける。backend api_back balance leastconn
balance source送信元 IP ハッシュで固定化する。backend session_back balance source
balance uriURI ハッシュでキャッシュサーバへ振り分ける。backend cache_back balance uri
balance first利用可能な最初のサーバを優先する。backend queue_back balance first
option httpchk GET /healthHTTP ヘルスチェックを設定する。backend web_back option httpchk GET /health
http-check expect status 200ヘルスチェックの期待ステータスを指定する。http-check expect status 200
agent-checkagent ポートから重みや状態を受け取る。server app1 10.0.1.10:8080 check agent-check agent-port 9000
bind ssl crtTLS 終端で証明書を指定する。bind *:443 ssl crt /etc/haproxy/cert.pem
bind alpn h2,http/1.1ALPN で HTTP/2 と HTTP/1.1 を提示する。bind *:443 ssl crt /etc/haproxy/cert.pem alpn h2,http/1.1
ssl-default-bind-optionsTLS の既定オプションを強化する。global ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
crt-list複数証明書を crt-list で管理する。bind *:443 ssl crt-list /etc/haproxy/crt-list.txt alpn h2,http/1.1
acl is_api path_beg /apiパス接頭辞 ACL を定義する。acl is_api path_beg /api
use_backend api_back if is_apiACL に一致したら別 backend へ送る。use_backend api_back if is_api
acl host_static hdr(host)Host ヘッダで分岐する。acl host_static hdr(host) -i static.example.com use_backend static_back if host_static
acl bad_bot hdr_subUser-Agent で拒否する。acl bad_bot hdr_sub(user-agent) -i badbot http-request deny if bad_bot
stick-table rate limit送信元 IP ごとにリクエストレートを制限する。frontend https-in stick-table type ip size 100k expire 10m store http_req_rate(10s) http-request track-sc0 src http-request deny if { sc_http_req_rate(0) gt 100 }
stats enable統計ページを有効化する。listen stats bind 127.0.0.1:8404 stats enable stats uri /stats
haproxy -c設定ファイルを検証する。haproxy -c -f /etc/haproxy/haproxy.cfg
systemctl reload haproxy接続を保ちながら HAProxy を reload する。sudo systemctl reload haproxy
show statRuntime API で統計を取得する。echo "show stat" | sudo socat - /var/run/haproxy.sock
show infoRuntime API でプロセス情報を確認する。echo "show info" | sudo socat - /var/run/haproxy.sock
disable server特定サーバを drain/停止扱いにする。echo "disable server web_back/web1" | sudo socat - /var/run/haproxy.sock
enable server無効化したサーバを戻す。echo "enable server web_back/web1" | sudo socat - /var/run/haproxy.sock
set server weightRuntime API で重みを変更する。echo "set server web_back/web1 weight 20" | sudo socat - /var/run/haproxy.sock
show tablestick-table の中身を確認する。echo "show table https-in" | sudo socat - /var/run/haproxy.sock
Related