Nginx restreint la configuration des fréquences d'accès pour éviter les attaques malveillantes
Avec le développement d'Internet, la sécurité des sites Web est devenue un enjeu important. Afin de prévenir les attaques malveillantes, nous devons limiter la fréquence d’accès. En tant que serveur Web hautes performances, Nginx peut atteindre cet objectif grâce à la configuration.
Nginx fournit un module appelé limit_req_module, qui peut limiter la fréquence d'accès. Avant de configurer, nous devons nous assurer que le module est activé. Dans le fichier nginx.conf, on retrouve le nœud http et on y ajoute le code suivant :
http { ... limit_req_zone $binary_remote_addr zone=myzone:10m rate=5r/s; ... }
Dans le code ci-dessus, limit_req_zone permet de définir une zone mémoire qui enregistre le nombre de visites pour chaque adresse IP. $binary_remote_addr est une variable Nginx qui représente l'adresse IP du client. zone=myzone est le nom d'une zone et peut être personnalisé. 10 millions signifie que la zone a une taille de 10 mégaoctets. rate=5r/s signifie que jusqu’à 5 requêtes sont autorisées par seconde.
Ensuite, nous pouvons appliquer cette restriction dans la configuration spécifique de l'emplacement. Par exemple, nous souhaitons limiter une interface, le code est le suivant :
location /api/ { ... limit_req zone=myzone burst=10 nodelay; ... }
Dans le code ci-dessus, l'instruction limit_req est utilisée pour activer le module de limitation de fréquence de requête et précise le nom de zone précédemment défini myzone. burst=10 signifie qu'après avoir dépassé la fréquence limite, jusqu'à 10 requêtes seront retardées. Nodelay signifie que si la limite de fréquence est dépassée, il n'y aura pas de délai, mais une erreur 503 sera renvoyée directement.
En plus de la méthode de configuration ci-dessus, nous pouvons également limiter la période de temps spécifiée. Par exemple, nous souhaitons le limiter uniquement dans la période de travail, le code est le suivant :
location /api/ { ... limit_req zone=myzone burst=10 nodelay; limit_req_status 403; limit_req_log_level error; limit_req_time 8h; ... }
Dans le code ci-dessus, limit_req_time est utilisé pour préciser la période limitée, ici nous la limitons à 8 heures. D'autres instructions telles que limit_req_status et limit_req_log_level sont utilisées pour configurer le code d'état de retour et le niveau de journalisation lorsque la limite de fréquence est dépassée.
Il est à noter que la configuration ci-dessus ne limite que la fréquence d'accès d'une seule interface. Si nous voulons restreindre l'ensemble du site Web, nous pouvons le configurer dans le nœud du serveur. Le code est le suivant :
server { ... limit_req zone=myzone burst=10 nodelay; ... }
Grâce à la configuration ci-dessus, nous pouvons limiter efficacement l'impact des attaques malveillantes sur le site web. Cependant, il convient de noter que la granularité des restrictions de fréquence doit être déterminée par les besoins spécifiques de l'entreprise et ne doit pas être trop stricte, sinon cela affectera l'expérience d'accès des utilisateurs normaux.
Pour résumer, le module limit_req_module de Nginx peut nous aider à limiter la fréquence d'accès pour prévenir les attaques malveillantes. Grâce à une configuration raisonnable, la sécurité du site Web peut être protégée et l'expérience d'accès de l'utilisateur peut être améliorée. J'espère que cet article sera utile à tout le monde !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!