Middle
Jaká omezení mohou na serveru nginx existovat a s čím mohou být spojena?
sobes.tech AI
Odpověď od AI
Limity Nginx mohou být spojeny s výkonem, bezpečností a systémovými zdroji.
Hlavní limity:
worker_processes: Omezuje počet pracovních procesů Nginx. Je spojeno s počtem jader procesoru a dostupnou pamětí. Příliš velká hodnota může vést k overheadu přepínání kontextu, příliš malá - k neefektivnímu využívání zdrojů.worker_connections: Maximální počet současných spojení, která může zpracovat jeden pracovní proces. Je spojeno s deskriptorů souborů operačního systému (ulimit -n) a dostupnou pamětí.client_max_body_size: Maximální povolená velikost těla požadavku klienta. Je spojeno s prevencí útoků typu "odmítnutí služby" (DoS) prostřednictvím odesílání velmi velkých požadavků.limit_conn/limit_req: Moduly pro omezení počtu současných spojení nebo rychlosti požadavků od jedné IP adresy. Používají se k ochraně před DoS útoky a zneužíváním.open_file_cache max: Maximální počet záznamů v cache otevřených souborů. Je spojeno s počtem současně otevřených souborů a dostupnou pamětí. Ovlivňuje výkon při práci s velkým počtem souborů (například statické soubory, logy).proxy_buffer_size/proxy_buffers: Velikosti a počet bufferů pro proxy odpovědi. Jsou spojeny s pamětí. Nesprávné hodnoty mohou vést k chybám nebo neefektivnímu využívání paměti.- Timeouty:
client_body_timeout: Timeout mezi přijetím částí těla požadavku klienta.client_header_timeout: Timeout mezi přijetím hlaviček požadavku klienta.send_timeout: Timeout mezi odesláním dat klientovi.keepalive_timeout: Timeout pro udržování keep-alive spojení. Jsou spojeny se stabilitou spojení a ochranou před pomalými útoky.
resolver_timeout: Timeout pro řešení DNS jmen. Je spojeno s dostupností DNS serverů a stabilitou sítě.
Limity mohou záviset na:
- Operačním systému: Systémové limity na počet souborových deskriptorů, vláken, objem paměti.
- Hardwarových zdrojích: Počet jader procesoru, objem operační paměti, šířka pásma sítě.
- Zátěži: Očekávaný počet současných uživatelů, intenzita požadavků.
- Konfiguraci Nginx: Direktivy v konfiguračních souborech.
- Bezpečnosti: Nutnost ochrany před DoS útoky, pokusy o prolomení hesel a další hrozby.
Příklad konfigurace worker_processes a worker_connections:
# Určujeme počet pracovních procesů podle dostupných jader CPU.
worker_processes auto;
# Maximální počet spojení, které může zpracovat jeden pracovní proces.
# 65535 - typická hodnota pro Linux, ale je třeba zkontrolovat ulimit -n
# 1024 (výchozí) * worker_processes - celkový počet spojení, které může Nginx zpracovat.
events {
worker_connections 65535;
}
Tabulka s příklady limitů:
| Limit | Vztah k | Typická hodnota |
|---|---|---|
worker_processes |
CPU | auto |
worker_connections |
Fajldeskriptorům, paměti | 1024 - 65535 |
client_max_body_size |
Bezpečnost | 1m - 100m |
limit_conn |
Bezpečnost, zátěž | Závisí na politice |
keepalive_timeout |
Výkon, zátěž | 60s - 120s |
open_file_cache max |
Paměť, počet souborů | 1000 - 100000 |
Správné nastavení limitů je klíčové pro stabilitu, výkon a bezpečnost Nginx. Často vyžaduje monitorování a iterativní doladění.