This document setup HAProxy as load balancer.
In frontend (codimd-http) we setup as SSL offloader and redirect http protocol to https. Then pass traffics to CodiMD backend.
In backend (codimd-servers) we setup health checker for CodiMD service. it check http://127.0.0.1:3000/status
and expect to get status 200 if service is working perfectly.
Below is a part of configuration example in /etc/haproxy/haproxy.cfg
frontend codimd-http
bind :80
bind :443 ssl crt /etc/certs/md.example.com/certs.pem alpn h2,http/1.1
mode http
# redirect http -> https
redirect scheme https if !{ ssl_fc }
# add proxy header
option forwardfor
http-request add-header X-Forwarded-Proto https if { ssl_fc }
default_backend codimd-servers
backend codimd-servers
# config health check
option httpchk GET /status
http-check expect status 200
server codimd-docker-server 127.0.0.1:3000 check inter 2000 fastinter 1000 downinter 1000