# HAProxy — пример для Kalina Mall / git.kalinamall.ru # Версия синтаксиса: HAProxy 2.4+ # # TLS завершается на HAProxy. # Публичное имя Gitea: git.kalinamall.ru # Бэкенд Gitea в LAN: 192.168.160.129 (или то же имя git.kalinamall.ru, если Split DNS / запись указывает на LAN). # # Сертификат PEM на прокси: SAN должен включать git.kalinamall.ru (и при необходимости другие имена этого frontend). # Пример пути: # /etc/haproxy/certs/kalinamall.pem # # Остальные сервисы (Synology, Zabbix, RDP и т.д.) см. в референсе `haproxy/haproxy.cfg` — перенесите нужные frontend/backend # и подставьте свои ACL и LAN IP. global log stdout format raw local0 maxconn 40000 defaults mode http log global option httplog option dontlognull timeout connect 10s timeout client 300s timeout server 300s timeout http-request 10s # --- HTTP (80): ACME + Gitea frontend fe_http bind *:80 mode http option forwardfor except 127.0.0.0/8 acl path_acme path_beg /.well-known/acme-challenge/ acl host_git hdr(host) -i git.kalinamall.ru use_backend bk_acme if path_acme use_backend bk_gitea if host_git default_backend bk_http_default # --- HTTPS (443): Gitea frontend fe_https bind *:443 ssl crt /etc/haproxy/certs/kalinamall.pem alpn http/1.1 mode http option forwardfor except 127.0.0.0/8 acl host_git hdr(host) -i git.kalinamall.ru use_backend bk_gitea if host_git default_backend bk_http_default # Заглушка для неизвестного Host backend bk_http_default mode http http-request deny deny_status 404 # ACME webroot через локальный nginx (или другой сервис на 127.0.0.1:8080) backend bk_acme mode http server nginx_acme 127.0.0.1:8080 # Gitea UI + Git over HTTP(S) backend bk_gitea mode http option httpchk http-check send meth GET uri /api/healthz ver HTTP/1.1 hdr Host git.kalinamall.ru http-check expect status 200 http-request set-header Host git.kalinamall.ru http-request set-header X-Forwarded-Host %[req.hdr(Host)] http-request set-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Forwarded-Proto http if !{ ssl_fc } http-request set-header X-Forwarded-Port 443 if { ssl_fc } http-request set-header X-Forwarded-Port 80 if !{ ssl_fc } server gitea1 192.168.160.129:3000 check inter 10s rise 2 fall 3 # Если на HAProxy git.kalinamall.ru резолвится во внутренний IP Gitea: # server gitea1 git.kalinamall.ru:3000 check inter 10s rise 2 fall 3 # Git SSH: внешний :2222 -> Gitea SSH на хосте Gitea frontend fe_git_ssh bind *:2222 mode tcp option tcplog default_backend bk_git_ssh backend bk_git_ssh mode tcp server gitea_ssh 192.168.160.129:2222 check inter 10s rise 2 fall 3 # server gitea_ssh git.kalinamall.ru:2222 check inter 10s rise 2 fall 3