La raison pour laquelle je veux le faire est que les utilisateurs développent contre notre API avec JavaScript, et certains développeurs bousillent et amènent les visiteurs à claquer le serveur avec des requêtes AJAX. Lorsque cela se produit, je veux pouvoir limiter les demandes d'API à peut-être 50 demandes par minute , ou quelque chose dans ce sens.
Remarque: (en particulier les ressources intensives en bases de données, donc peut-être au niveau du chemin, plutôt qu'à l'échelle du serveur (par exemple, accélérateur "/ json_api /", mais pas "/ statique /").
la source
zone=limit_req_zone
, à la place?$http_authorization
variable pour définir une nouvelle zone où la clé est un tel en-tête plutôt que l'adresse IP, c'est-à-dire,limit_req_zone $http_authorization zone = per_user : 10m rate = 5r/s
puis utiliser laper_user
zone dans les sections d'emplacement où vous souhaitez faire la limitation de taux par utilisateur. Non testé, je viens de lire la documentation et la liste des variables nginx ... faites-moi savoir si vous essayez ceci!