<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://fr-wiki.ikoula.com/index.php?action=history&amp;feed=atom&amp;title=Mise_en_place_de_rate-limit_sur_Haproxy</id>
	<title>Mise en place de rate-limit sur Haproxy - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://fr-wiki.ikoula.com/index.php?action=history&amp;feed=atom&amp;title=Mise_en_place_de_rate-limit_sur_Haproxy"/>
	<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Mise_en_place_de_rate-limit_sur_Haproxy&amp;action=history"/>
	<updated>2026-04-10T19:25:07Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Mise_en_place_de_rate-limit_sur_Haproxy&amp;diff=30568&amp;oldid=prev</id>
		<title>Mgrelet794f6 : Page créée avec « &lt;span data-link_translate=&quot;he&quot;&gt;&lt;/span&gt;&lt;span data-link_translate=&quot;ro&quot;&gt;&lt;/span&gt;&lt;span data-link_translate=&quot;ru&quot;&gt;&lt;/span&gt;&lt;span data-link_translate=&quot;pl&quot;&gt;&lt;/span&gt;&lt;span data-link_tra... »</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Mise_en_place_de_rate-limit_sur_Haproxy&amp;diff=30568&amp;oldid=prev"/>
		<updated>2021-06-09T09:04:00Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_tra... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Nous allons voir comment mettre en place du rate-limit sur une fenêtre glissante ou fixe au niveau d'Haproxy.&amp;lt;br&amp;gt;&lt;br /&gt;
Cela peut s'avérer efficace contre les Bots ou encore les attaques de type Deny of service HTTP/HTTPS.&lt;br /&gt;
&lt;br /&gt;
==Déroulé== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Nous allons commencer par du rate-limit sur une fenêtre glissante, au niveau de notre frontend nous allons ajouter la configuration ci-dessous :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stick-table type ipv6 size 100k  expire 5m  store http_req_rate(10s)&lt;br /&gt;
http-request track-sc0 src&lt;br /&gt;
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 100 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons renvoyer un code ''429'' aux adresses IP effectuant plus de ''100'' requêtes en ''10'' secondes sur une fenêtre de ''5'' minutes.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La directive ''stick-table'' crée un magasin clé-valeur pour stocker des compteurs, comme le taux de requête HTTP par client. La clé est l'adresse IP du client, telle que configurée par le paramètre type (ipv6 ne signifie pas que nous stockons que des IPv6, mais permet de stocker les IPv4 et IPv6), qui est utilisée pour stocker et agréger le nombre de demandes de ce client.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La ligne ''http-request track-sc0 src'' ajoute le client en tant qu'enregistrement dans la table stick. Les compteurs commencent à être enregistrés dès que l'IP est ajoutée.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Un enregistrement dans la ''sticky-table'' expire et est supprimé après une période d'inactivité par le client, tel que défini par le paramètre ''expire'' (ici 5 minutes). Sans paramètre d'expiration, les enregistrements les plus anciens sont supprimés lorsque le stockage est plein (ici, nous autorisons ''100k'' donc 100 000 enregistrements). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La ligne ''http-request deny'' définit le seuil de limite et l'action à entreprendre lorsque quelqu'un le dépasse (ici, nous autorisons jusqu'à 100 demandes et en refusons d'autres avec une réponse de ''429 Too Many Requests'' jusqu'à ce que le nombre au cours des 10 dernières secondes soit à nouveau inférieur au seuil.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La méthode d'extraction ''sc_http_req_rate'' renvoie le taux de requête actuel du client.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici maintenant la mise en place de rate-limit sur une fenêtre fixe :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stick-table  type ipv6  size 100k  expire 24h  store http_req_cnt&lt;br /&gt;
http-request track-sc0 src&lt;br /&gt;
http-request deny deny_status 429 if { sc_http_req_cnt(0) gt 1000 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas ci, nous allons autoriser ''1000'' requêtes d'une adresse IP sur une fenêtre de ''24'' heures.&lt;br /&gt;
Plutôt que d'utiliser le compteur ''http_req_rate'', qui remonte le taux de requêtes sur une période donnée, nous utilisons ici ''http_req_cnt'', qui lui renvoi le nombre de requêtes qui s'incrémente pour toujours jusqu'à la réinitialisation ou jusqu'à ce que l'expiration soit atteinte.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La méthode d'extraction ''sc_http_req_cnt'' renvoie le nombre de requêtes actuel du client.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commentaire --&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Placez ci-dessous la ou les catégories auxquelles se rapporte votre article. Ex: [[Catégorie:Contribuer]] [[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:Linux]]&lt;br /&gt;
[[Catégorie:Haproxy]]&lt;/div&gt;</summary>
		<author><name>Mgrelet794f6</name></author>
	</entry>
</feed>