Auparavant, dans notre NGINX Dans la série sur la gestion du trafic et les contrôles de sécurité, nous avons expliqué comment limiter le nombre de connexions qu’un même client peut établir avec vos ressources Web, en utilisant des paramètres d’identification du client tels que l’adresse IP. Nous avons également expliqué comment limiter le taux de demandes (limiter le taux auquel un client peut faire des demandes) pour vos ressources Web.

Pour vous assurer que la bande passante d’utilisation de votre application n’est pas dépensée par un seul client, vous devez contrôler les vitesses de chargement et de téléchargement par client. Ceci est une commune NGINX contrôle de sécurité contre DoS (Déni de service) des attaques d’utilisateurs malveillants qui essaient simplement d’abuser des performances du site.

Dans cette troisième partie de la série, nous expliquerons comment limiter la bande passante du réseau dans le NGINX serveur Web.

Limitation de la bande passante dans NGINX

Pour limiter la bande passante dans NGINXUtilisez le taux_limite directive qui limite le taux de transmission des réponses à un client. Il est valable dans le HTTP, serveur, emplacementet si déclaration dans un emplacement bloc, et il spécifie la limite de débit pour un contexte donné en octets par seconde par défaut. Vous pouvez aussi utiliser m pour mégaoctets ou g pour les gigaoctets.

limit_rate 20k;

Une autre directive connexe est limit_rate_after, qui spécifie que la connexion ne doit pas être limitée en débit tant qu’une quantité spécifiée de données n’a pas été transférée. Cette directive peut être définie dans le HTTP, le serveur, l’emplacement et « l’instruction if dans un bloc d’emplacement ».

Publicité
limit_rate_after 500k;

Voici un exemple de configuration pour limiter un client à télécharger du contenu via une seule connexion à une vitesse maximale de 20 kilo-octets par seconde.

upstream api_service {
    server 10.1.1.10:9051;
    server 10.1.1.77:9052;
}

server {
    listen 80;
    server_name testapp.tecmint.com;
    root /var/www/html/testapp.tecmint.com/build;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html =404 =403 =500;
    }
    location /api {
        proxy_pass http://api_service;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

       
   }
   location /documents {
        limit_rate 20k;
        limit_rate_after 500k;  
}
}

Une fois que vous avez ajouté les paramètres requis expliqués ci-dessus, enregistrez les modifications et fermez le fichier. Après, vérifiez si le NGINX la syntaxe de configuration est correcte, comme ceci :

$ sudo nginx -t

Si tout est OK, rechargez le NGINX service pour effectuer les dernières modifications :

$ sudo systemctl reload nginx

Limitation de la bande passante et du nombre de connexions dans NGINX

Avec la configuration ci-dessus, le client peut ouvrir plusieurs connexions pour augmenter la bande passante. Par conséquent, vous pouvez également limiter les connexions par client à l’aide d’un paramètre tel qu’une adresse IP, comme nous l’avons vu précédemment.

Par exemple, vous pouvez limiter une connexion par adresse IP.

upstream api_service {
    server 127.0.0.1:9051;
    server 10.1.1.77:9052;
}

limit_conn_zone $binary_remote_addr zone=limitconnbyaddr:20m;
limit_conn_status 429;

server {
    listen 80;
    server_name testapp.tecmint.com;
    root /var/www/html/testapp.tecmint.com/build;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html =404 =403 =500;
    }
    location /api {
        limit_conn   limitconnbyaddr  5;

        proxy_pass http://api_service;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

       
   }
   location  /documents {
        limit_rate 50k;
        limit_rate_after 500k;  
        limit_conn   limitconnbyaddr  1;
}
}

Limitation dynamique de la bande passante dans NGINX

En tant que valeur de paramètre pour le taux_limite directive, vous pouvez spécifier des variables pour limiter dynamiquement la bande passante. Il est particulièrement utile dans les situations où le débit doit être limité en fonction d’une certaine condition.

Dans cet exemple, nous utilisons le bloc map. Il vous a permis de créer une nouvelle variable dont la valeur dépend des valeurs d’une ou plusieurs des variables d’origine ($ lent et $limit_rate) spécifié dans le premier paramètre.

upstream api_service {
    server 10.1.1.10:9051;
    server 10.1.1.77:9052;
}

map $slow $limit_rate {
    1     20k;
    2     30k;
}

server {
    listen 80;
    server_name testapp.tecmint.com;
    root /var/www/html/testapp.tecmint.com/build;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html =404 =403 =500;
    }
    location /api {
        proxy_pass http://api_service;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
   }
   location /documents {
        limit_rate $limit_rate;
        limit_rate_after 500k;
}
}

Voici un autre exemple d’exemple de configuration pour illustrer la limitation dynamique de la bande passante dans NGINX. Cette configuration permet à NGINX de limiter la bande passante en fonction de la version TLS. La directive limit_rate_after 512 implique le taux limite après l’envoi des en-têtes.

upstream api_service {
    server 10.1.1.10:9051;
    server 10.1.1.77:9052;
}

map $ssl_protocol $response_rate {
    "TLSv1.1" 50k;
    "TLSv1.2" 100k;
    "TLSv1.3" 500k;
}

server {
    listen 443 ssl;
    ssl_protocols       TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_certificate     /etc/ssl/testapp.crt;
    ssl_certificate_key   /etc/ssl/testapp.key;

    location / {
        limit_rate       $response_rate; # Limit bandwidth based on TLS version
        limit_rate_after 512;
        proxy_pass       http://api_service;
    }
}

C’est tout ce que nous avions pour vous dans cette partie de la série. Nous continuerons à couvrir davantage de sujets concernant NGINX la gestion du trafic et les contrôles de sécurité. Mais comme d’habitude, vous pouvez poser des questions ou partager vos réflexions sur ce guide via le formulaire de commentaires ci-dessous.

Référence: guide des contrôles de sécurité sur le site NGINX.

Si vous appréciez ce que nous faisons ici sur TecMint, vous devriez considérer :

TecMint est le site communautaire à la croissance la plus rapide et le plus fiable pour tout type d’articles, de guides et de livres Linux sur le Web. Des millions de personnes visitent TecMint ! pour rechercher ou parcourir les milliers d’articles publiés accessibles GRATUITEMENT à tous.

Si vous aimez ce que vous lisez, pensez à nous acheter un café (ou 2) en signe d’appréciation.

Soutenez-Nous

Nous sommes reconnaissants pour votre soutien sans fin.

Rate this post
Publicité
Article précédentAttack on Titan Promo révèle le relooking Steampunk de l’anime
Article suivantMarché de la technologie NB IoT 2022 Avancement et perspectives précises – Huawei, Nokia, Ericsson, Deutsche Telekom, ARM – Designer Women
Avatar De Violette Laurent
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici