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.
- 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
.
- 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;
...
}
- 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
.
- 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;
...
}
}
- 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.
- Spusťte test konfigurace:
sudo nginx -t
- 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.