From 8430cc362f1c9f902ae9f9f388998cd3a2a409b5 Mon Sep 17 00:00:00 2001 From: jlecour Date: Thu, 15 Feb 2024 10:27:01 +0100 Subject: [PATCH] typos --- HowtoHaproxy.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/HowtoHaproxy.md b/HowtoHaproxy.md index e5741379..353e03f1 100644 --- a/HowtoHaproxy.md +++ b/HowtoHaproxy.md @@ -163,13 +163,13 @@ frontend fe_https Le fichier `example_com.pem` doit contenir le certificat ainsi que la clé privée et éventuellement des paramètres Diffie-Hellman (tout au format PEM). -Il est possible d'indiquer plusieurs fois `crt /chemin/vers/fichier.pem` pour avoir plusieurs certificats possibles. HAProxy utilisera alors le mécanisme de SNI. Si on indique plutôt un dossier (par exemple `/etc/ssl/haproxy/`) tous les fichiers trouvés seront chargé par ordre alphabétique. +Il est possible d'indiquer plusieurs fois `crt /chemin/vers/fichier.pem` pour avoir plusieurs certificats possibles. HAProxy utilisera alors le mécanisme de SNI. Si on indique plutôt un dossier (par exemple `/etc/ssl/haproxy/`) tous les fichiers trouvés seront chargés par ordre alphabétique. Pour chaque fichier PEM trouvé, HAProxy cherchera un fichier `.ocsp` du même nom. Il peut être vide ou contenir une réponse OCSP valide (au format DER). Cela active le mécanisme de « OCSP stapling » Tous les détails de configuration pour l'attribut `crt` sont consultables sur -Dans le cas où HAProxy gère plusieurs domaines dont certains seulement ont un certificat SSL, HAProxy enverra par défaut le certificat défini par la directive `crt`. Si il pointe sur un répertoire, un des certificats du répertoire (ça ne semble pas être le premier/dernier par ordre alphabétique) sera envoyé. Pour éviter ce comportement, on peut rajouter la directive `strict-sni`. Dans ce cas, si HAProxy ne trouve pas le certificat qui correspond au domaine demandé par le client, il retournera l'erreur SSL *SSL_ERROR_BAD_CERT_DOMAIN*. +Dans le cas où HAProxy gère plusieurs domaines dont certains seulement ont un certificat SSL, HAProxy enverra par défaut le certificat défini par la directive `crt`. S’il pointe sur un répertoire, un des certificats du répertoire (ça ne semble pas être le premier/dernier par ordre alphabétique) sera envoyé. Pour éviter ce comportement, on peut rajouter la directive `strict-sni`. Dans ce cas, si HAProxy ne trouve pas le certificat qui correspond au domaine demandé par le client, il retournera l'erreur SSL *SSL_ERROR_BAD_CERT_DOMAIN*. Il est aussi possible de désigner un fichier contenant la liste de tous les PEM : @@ -278,7 +278,7 @@ La partie `http-request set-path` permet de modifier le path au moment du traite Le serveur amont n'ayant aucune information de l'URL intiale, s'il doit envoyer un en-tête de redirection calculé de manière relative à la requête, celui-ci ne sera pas correct. Il faut le modifier à la volée avant de renvoyer la réponse. La partie `http-response replace-header` va donc remplacer la valeur de l'en-tête `Location`. -L'expression régulière ne sera satisfaite que si le domaine d'origine est utilisé (ou totalement absent), conservant ainsi la possibilité d'avoir des redirection intactes vers d'autres domaines. +L'expression régulière ne sera satisfaite que si le domaine d'origine est utilisé (ou totalement absent), conservant ainsi la possibilité d'avoir des redirections intactes vers d'autres domaines. Détail des captures : 1. http ou https, suivi du _host_ et éventuellement un port (facultatif) @@ -293,7 +293,7 @@ L'utilisation d'un ACL (très rapide) permet de ne faire l'opération (plus lent C'est utile par exemple pour accéder aux graphes Munin du load-balancer. -Il faut faire écouter le serveur web local sur le port 81 (avec les bonnes restriction d'accès) en activant le Proxy Protocol ([exemple pour Nginx](/HowtoNginx#nginx-en-aval)), et y rediriger les requêtes : +Il faut faire écouter le serveur web local sur le port 81 (avec les bonnes restrictions d'accès) en activant le Proxy Protocol ([exemple pour Nginx](/HowtoNginx#nginx-en-aval)), et y rediriger les requêtes : ~~~ frontend myfront @@ -383,7 +383,7 @@ Pour les détails, dans le backend « per_ip_rates » on définit une directive Dans le second backend « per_ip_and_url_rates », on définit une directive `stick-table` de type binary (longueur de 8 bits), qui peut contenir jusqu'à 1 million d'entrées, qui expire au bout d'une heure et qui comptabilise le nombre de requêtes IP/URL sur les 10 dernières secondes. -On peut ensuite utiliser ces deux compteurs dans les frontends/backend de notre choix en y faisant référence dans une directive `http-request` via la paramètre `table`. +On peut ensuite utiliser ces deux compteurs dans les frontends/backend de notre choix en y faisant référence dans une directive `http-request` via le paramètre `table`. Dans l'exemple suivant, on crée deux blocs de 2 directives `http-request`. @@ -398,13 +398,13 @@ frontend default […] ~~~ -Le premier bloc contient deux lignes dont la première définit une règle « track-sc0 » qui se basant sur la table du backend « per_ip_rates » en omettant toutes les requêtes vers certains type de fichiers (CSS, JS…). La seconde ligne indique ensuite de renvoyer un status 429 si le nombre des requêtes HTTP/sec pour une même IP selon les données provenant de « track-sc0 » est supérieur à 100 (donc 100 requêtes depuis une même IP sur les 10 dernières seconndes). +Le premier bloc contient deux lignes dont la première définit une règle « track-sc0 » qui se basant sur la table du backend « per_ip_rates » en omettant toutes les requêtes vers certains types de fichiers (CSS, JS…). La seconde ligne indique ensuite de renvoyer un status 429 si le nombre des requêtes HTTP/sec pour une même IP selon les données provenant de « track-sc0 » est supérieur à 100 (donc 100 requêtes depuis une même IP sur les 10 dernières seconndes). -Le second bloc contient quant à lui deux lignes dont la première définit une règle « track-sc1 » qui se base sur la table du backend « per_ip_and_url_rates » en omettant toute les requêtes vers certains types de fichiers (CSS, JS…). La seconde ligne indique ensuite de renvoyer un status 429 si le nombre des requêtes HTTP/sec vers une URL unique depuis une même IP selon les données provenant de « track-sc1 » est supérieur à 10 (donc 10 requêtes depuis une même IP et vers la même URL sur les 10 dernières secondes). +Le second bloc contient quant à lui deux lignes dont la première définit une règle « track-sc1 » qui se base sur la table du backend « per_ip_and_url_rates » en omettant toutes les requêtes vers certains types de fichiers (CSS, JS…). La seconde ligne indique ensuite de renvoyer un status 429 si le nombre des requêtes HTTP/sec vers une URL unique depuis une même IP selon les données provenant de « track-sc1 » est supérieur à 10 (donc 10 requêtes depuis une même IP et vers la même URL sur les 10 dernières secondes). ### Protocol PROXY -L'utilisation du protocol PROXY permet de faciliter la communication et la traçabilité lorsque des proxy sont impliqués. +L'utilisation du protocol PROXY permet de faciliter la communication et la traçabilité lorsque des proxys sont impliqués. Voir la [présentation générale du protocol](https://www.haproxy.com/blog/use-the-proxy-protocol-to-preserve-a-clients-ip-address/). @@ -586,7 +586,7 @@ Les valeurs renvoyées peuvent être les suivantes : - Un % entier (ex 75%) pour l'ajustement du poids - La chaîne `maxconn:` suivie d'un entier pour spécifier le nombre max de connexions -- Les mot `ready`, `drain`, `maint`, `down` et `up` pour modifier les états +- Les mots `ready`, `drain`, `maint`, `down` et `up` pour modifier les états Il faut bien avoir en tête qu'il y a 2 types d'états : * "administrative" : ready (prêt), drain (ne plus envoyer de trafic, sans couper l'existant), maint (maintenance, plus de trafic du tout) @@ -598,7 +598,7 @@ On notera que seuls les algorithmes d'équilibrage dynamiques (roundrobin et lea ### Agent-check sur la surveillance de l'espace disque -On peux faire un agent check avec xinetd comme vu plus haut et le script `diskchk.sh` qui permet de surveillé l'espace disque, exemple avec la partition `/var` : +On peut faire un agent check avec xinetd comme vu plus haut et le script `diskchk.sh` qui permet de surveiller l'espace disque, exemple avec la partition `/var` : ~~~bash #!/bin/bash @@ -617,7 +617,7 @@ fi exit 0 ~~~ -Pour utilisé ce script il faut au préalable que le **check nrpe** `check_disk` soit installé sur la machine que l'on veux surveillé. +Pour utiliser ce script il faut au préalable que le **check nrpe** `check_disk` soit installé sur la machine que l'on veut surveiller. La variable `disk_space_max` indique en pourcentage l'espace disque restant à partir duquel le script retournera `drain`. @@ -637,7 +637,7 @@ backend mail server mail01 192.168.0.2:25 inter 10000 rise 2 fall 5 check weight 50 agent-port 9999 ~~~ -Dans ce cas le serveur mis en `drain` par le script, le serveur concerné n'envera plus de trafic, mais les mails en cours d'envoir ne sont pas coupés. +Dans ce cas le serveur mis en `drain` par le script, le serveur concerné n'enverra plus de trafic, mais les mails en cours d'envoi ne sont pas coupés. ### HTTP basic authentication @@ -662,7 +662,7 @@ http-request auth realm Texte if !AuthOkayPourMonSite Remplacez les variables `$nom` par vos valeurs (en enlevant le `$`). -Les conditions après le `if` sont pas défaut (implicitement) combinées avec des ET logiques. Si nécessaire, on peut utiliser explicitement le mot-clé `or`. +Les conditions après le `if` sont par défaut (implicitement) combinées avec des ET logiques. Si nécessaire, on peut utiliser explicitement le mot-clé `or`. #### Redirection HTTPS @@ -720,7 +720,7 @@ resolvers mydns parse-resolv-conf ~~~ -Lorsque le nom de domaine indiqué comporte plusieurs adresse IP et qu'on veut avoir autant de serveurs disponibles que d'IP disponibles, on peut utiliser `server-template`. Exemple avec un domaine qui aurait 4 IP résolues : +Lorsque le nom de domaine indiqué comporte plusieurs adresses IP et qu'on veut avoir autant de serveurs disponibles que d'IP disponibles, on peut utiliser `server-template`. Exemple avec un domaine qui aurait 4 IP résolues : ~~~ backend myback