typos
This commit is contained in:
parent
413deb1992
commit
8430cc362f
|
@ -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).
|
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 »
|
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 <http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#5.1-crt>
|
Tous les détails de configuration pour l'attribut `crt` sont consultables sur <http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#5.1-crt>
|
||||||
|
|
||||||
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 :
|
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.
|
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`.
|
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 :
|
Détail des captures :
|
||||||
|
|
||||||
1. http ou https, suivi du _host_ et éventuellement un port (facultatif)
|
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.
|
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
|
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.
|
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`.
|
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
|
### 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/).
|
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
|
- 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
|
- 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 :
|
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)
|
* "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
|
### 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
|
~~~bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
@ -617,7 +617,7 @@ fi
|
||||||
exit 0
|
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`.
|
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
|
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
|
### HTTP basic authentication
|
||||||
|
|
||||||
|
@ -662,7 +662,7 @@ http-request auth realm Texte if !AuthOkayPourMonSite
|
||||||
|
|
||||||
Remplacez les variables `$nom` par vos valeurs (en enlevant le `$`).
|
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
|
#### Redirection HTTPS
|
||||||
|
|
||||||
|
@ -720,7 +720,7 @@ resolvers mydns
|
||||||
parse-resolv-conf
|
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
|
backend myback
|
||||||
|
|
Loading…
Reference in a new issue