# https://docs.haproxy.org/3.1/configuration.html
global
log stdout format raw local0 # Send logs to Docker's stdout
master-worker
resolvers docker_resolver
nameserver docker_dns 127.0.0.11:53 # Docker's internal DNS
resolve_retries 3
timeout resolve 1s
timeout retry 1s
hold valid 10s
hold obsolete 30s
accepted_payload_size 8192 # Optional: Increase if you have many replicas
defaults
mode http
log global
timeout client 120s
timeout connect 120s
timeout server 120s
timeout http-request 120s
option httplog
frontend haproxy_entrypoint
bind :443 ssl crt /certs/crt.pem verify required ca-file /certs/ca.pem
use_backend %[req.hdr(host),lower,word(1,:)] # strip out port from host
frontend healthchecks
bind :80
default_backend basic_loba_check
backend basic_loba_check
http-request return status 200 content-type "text/plain" lf-string "OK/HEALTHY"
backend "${DOMAIN_NAME}"
balance leastconn
http-request set-header Host "${DOMAIN_NAME}"
server-template gatekeeper-web- "${REPLICA_COUNT}" gatekeeper-web:8000 check resolvers docker_resolver init-addr none
backend "feedback.${BASE_DOMAIN_NAME}"
balance leastconn
http-request set-header Host feedback."${BASE_DOMAIN_NAME}"
server-template gatekeeper-feedback- 1 gatekeeper-feedback:8000 check resolvers docker_resolver init-addr none
backend "health.${BASE_DOMAIN_NAME}"
balance leastconn
http-request set-header Host health."${BASE_DOMAIN_NAME}"
server-template gatekeeper-health- 1 gatekeeper-health:8000 check resolvers docker_resolver init-addr none
#EOF - trailing newline required