Košík je prázdný

V tomto článku se podíváme na konkrétní postupy nastavení omezení rychlosti pro vybrané IP adresy na webovém serveru Nginx běžícím na operačním systému CentOS 7. Toto nastavení může být velmi užitečné pro ochranu serveru před nadměrným zatížením způsobeným neobvykle vysokým počtem požadavků od konkrétních zdrojů.

Předpoklady

Před začátkem se ujistěte, že:

  • Máte přístup k serveru s CentOS 7 s nainstalovaným Nginx.
  • Máte oprávnění provádět změny v konfiguračních souborech Nginx jako uživatel s sudo oprávněními.

Krok 1: Přístup k konfiguračnímu souboru Nginx

Pro omezení rychlosti pro konkrétní IP adresy budete muset upravit konfigurační soubor pro váš serverový blok nebo celosvětovou konfiguraci Nginx. Konfigurační soubory Nginx jsou obvykle umístěny v /etc/nginx/nginx.conf pro hlavní konfiguraci nebo v /etc/nginx/conf.d/ pro konkrétní serverové bloky.

  1. Otevřete konfigurační soubor vašeho serveru v editoru. Například, pokud máte serverový blok pro vaši doménu v /etc/nginx/conf.d/mujweb.conf, otevřete tento soubor příkazem:
    sudo nano /etc/nginx/conf.d/mujweb.conf
    ​

 

Krok 2: Definování limitů rychlosti

Nginx umožňuje omezení rychlosti pomocí direktivy limit_req_zone, která se definuje v kontextu http, a direktivy limit_req, která se aplikuje v kontextu server nebo location.

  1. Přidejte limit_req_zone do hlavního konfiguračního souboru Nginx (nginx.conf) nebo do vašeho serverového bloku. Tato direktiva určuje paměťovou zónu pro sledování požadavků a maximální počet povolených požadavků za definovaný časový úsek. Například:
    http {
        ...
        limit_req_zone $binary_remote_addr zone=mojeomezeni:10m rate=1r/s;
        ...
    }
    ​
  1. Zde $binary_remote_addr slouží jako klíč pro sledování IP adres, zone=mojeomezeni:10m definuje název paměťové zóny a velikost (10 MB), a rate=1r/s určuje povolenou rychlost na 1 požadavek za sekundu.

Krok 3: Aplikace limitů rychlosti

Po definování zóny pro omezení rychlosti můžete omezení aplikovat na konkrétní serverový blok nebo lokaci pomocí direktivy limit_req.

  1. V konfiguračním souboru vašeho serverového bloku přidejte direktivu limit_req v kontextu server nebo location, kam chcete omezení aplikovat:
    server {
        ...
        location / {
            limit_req zone=mojeomezeni burst=5 nodelay;
            ...
        }
    }
    ​

 

  1. Direktiva burst=5 umožňuje krátkodobě překročit rychlostní limit, což je užitečné pro absorbování krátkých špiček v provozu. nodelay znamená, že až do dosažení limitu burst nebudou požadavky zdržovány.

Krok 4: Testování a restartování Nginx

Po dokončení konfigurace je důležité ověřit, zda jsou všechny změny syntakticky správné, a poté restartovat Nginx, aby se nová nastavení projevila.

  1. Spusťte test konfigurace:
    sudo nginx -t
    ​
  2. Pokud test proběhne bez problémů, restartujte Nginx:
    sudo systemctl restart nginx
    ​

Tímto postupem jste úspěšně nastavili omezení rychlosti pro konkrétní IP adresy na vašem Nginx serveru běžícím na CentOS 7. Pamatujte, že správné nastavení limitů rychlosti může pomoci předejít přetížení serveru a zajistit rovnoměrnější rozdělení zdrojů mezi všechny uživatele.