Contre toute attente

Contre toute attente, disais-je, mon installation d’un petit proxy (haproxy) sur un Raspberry Pi 3+ fonctionne comme prévu, du premier coup, et ce jusqu’à plus ample informé !

Jusque et y compris le renouvellement d’un certificat (en mode test) sur l’un des deux serveurs qui se trouve derrière, Incredible :-)

Ma config haproxy (histoire de pouvoir m’y référer plus tard si besoin) :

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                 tcp
    option               tcplog
    log                  global
    option               dontlognull
    timeout connect      5000
    timeout client       50000
    timeout server       50000

#---------------------------------------------------------------------
# dedicated stats page
#---------------------------------------------------------------------
listen stats
    mode http
    bind :22222
    stats enable
    stats uri            /haproxy?stats
    stats realm          Haproxy\ Statistics
    stats auth           zeboss:passwordisfutile
    stats refresh        30s

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main_http_listen
    bind        192.168.42.40:80
    mode        http

    acl         acl_nextcloud_boulot_http  hdr(host) -i nextcloud.boulot.fr
    acl         acl_boulot_http            hdr(host) -i boulot.fr

    use_backend backend_snc_http        if acl_nextcloud_boulot_http
    use_backend backend_sweb_http       if acl_boulot_http

frontend main_https_listen
    bind        192.168.42.40:443
    mode        tcp
    option      tcplog
    log         global
    tcp-request inspect-delay 5s
    tcp-request content accept if { req.ssl_hello_type 1 }

    acl         acl_nextcloud_boulot_https    req.ssl_sni -i nextcloud.boulot.fr
    acl         acl_boulot_https              req.ssl_sni -i boulot.fr

    use_backend backend_snc_https     if acl_nextcloud_boulot_https
    use_backend backend_sweb_https    if acl_boulot_https

#---------------------------------------------------------------------
# Backends
#---------------------------------------------------------------------

# Nextcloud server
backend backend_snc_http
    description snc (HTTP)
    mode http
    server server_snc_http 192.168.42.13:80 check

backend backend_snc_https
    description snc (HTTPS)
    mode tcp
    option ssl-hello-chk
    server server_snc_https 192.168.42.13:443 check

# Web server
backend backend_sweb_http
    description sweb (HTTP)
    mode http
    server server_sweb_http 192.168.42.16:80 check

backend backend_sweb_https
    description sweb (HTTPS)
    mode tcp
    option ssl-hello-chk
    server server_sweb_https 192.168.42.16:443 check

Quelques explications :

Le proxy écoute sur les deux ports 80 et 443 (redirigés depuis la box).

Pour le port 80, c’est du mode HTTP basique, utile en particulier pour laisser passer les quelques requêtes de mise en place des certificats sur les serveurs qui sont derrière. La distinction est faite sur le nom de domaine requis pour diriger vers le premier (serveur Nextcloud) ou le second (serveur web).

Pour le port 443, c’est le mode TCP qui est requis, pour faire la distinction.

Je laisse le soin aux serveurs qui sont derrière de rediriger le trafic HTTP vers HTTPS autant que de besoin.

Pas besoin non plus de mettre en place du Load balancing — ce que haproxy est capable de faire aussi — avec mes deux seuls petits serveurs.

Un certbot renew --dry-run fonctionne comme attendu, je verrai d’ici quelques jours si le renouvellement réel fonctionne comme prévu (demain a priori).

Jusqu’à présent les stats montent gentiment, on verra sur la durée comment le Raspberry tient la charge…


Et un premier certificat renouvelé à travers le proxy, tout fonctionne comme attendu \o/

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15087

Haut de page