Sobes.tech
Middle

Aké limity môžu existovať na serveri nginx a s čím môžu byť spojené?

sobes.tech AI

Odpoveď od AI

Limity Nginx môžu byť spojené s výkonom, bezpečnosťou a systémovými zdrojmi.

Hlavné limity:

  • worker_processes: Obmedzuje počet pracovných procesov Nginx. Súvisí s počtom jadier procesora a dostupnou pamäťou. Príliš veľká hodnota môže viesť k overheadu pri prepínaní kontextov, príliš malá - k neefektívnemu využívaniu zdrojov.
  • worker_connections: Maximálny počet súčasných spojení, ktoré môže spracovať jeden pracovný proces. Súvisí s deskriptorami súborov operačného systému (ulimit -n) a dostupnou pamäťou.
  • client_max_body_size: Maximálna povolená veľkosť tela požiadavky klienta. Súvisí s prevenciou útokov typu "odmietnutie služby" (DoS) odosielaním veľmi veľkých požiadaviek.
  • limit_conn / limit_req: Moduly na obmedzenie počtu súčasných spojení alebo rýchlosti požiadaviek od jednej IP adresy. Používajú sa na ochranu pred DoS útokmi a zneužívaním.
  • open_file_cache max: Maximálny počet záznamov v cache otvorených súborov. Súvisí s počtom súčasne otvorených súborov a dostupnou pamäťou. Ovplyvňuje výkon pri práci s veľkým počtom súborov (napríklad statické súbory, logy).
  • proxy_buffer_size / proxy_buffers: Veľkosti a počet bufferov pre proxy odpovede. Súvisia s pamäťou. Nesprávne hodnoty môžu viesť k chybám alebo neefektívnemu využívaniu pamäti.
  • Timeouty:
    • client_body_timeout: Timeout medzi prijatím častí tela požiadavky klienta.
    • client_header_timeout: Timeout medzi prijatím hlavičiek požiadavky klienta.
    • send_timeout: Timeout medzi odoslaním dát klientovi.
    • keepalive_timeout: Timeout pre udržiavanie keep-alive spojení. Súvisia so stabilitou spojenia a ochranou pred pomalými útokmi.
  • resolver_timeout: Timeout pre riešenie DNS mien. Súvisí s dostupnosťou DNS serverov a stabilitou siete.

Limity môžu závisieť od:

  • Operačného systému: Systémové limity na počet súborových deskriptorov, vlákien, objem pamäti.
  • Hardvérových zdrojov: Počet jadier procesora, objem RAM, šírka pásma siete.
  • Zaťaženia: Očakávaný počet súčasných používateľov, intenzita požiadaviek.
  • Konfigurácie Nginx: Direktívy v konfiguračných súboroch.
  • Bezpečnosti: Potreba ochrany pred DoS útokmi, pokusmi o prelomenie hesiel a inými hrozbami.

Príklad konfigurácie worker_processes a worker_connections:

# Určujeme počet pracovných procesov podľa dostupných jadier CPU.
worker_processes auto;

# Maximálny počet spojení, ktoré môže spracovať jeden pracovný proces.
# 65535 - typická hodnota pre Linux, ale treba skontrolovať ulimit -n
# 1024 (predvolené) * worker_processes - celkový počet spojení, ktoré môže Nginx spracovať.
events {
    worker_connections 65535;
}

Tabuľka s príkladmi limitov:

Limit Súvislosť s Typická hodnota
worker_processes CPU auto
worker_connections Fajldeskriptorom, pamäť 1024 - 65535
client_max_body_size Bezpečnosť 1m - 100m
limit_conn Bezpečnosť, záťaž Závisí od politiky
keepalive_timeout Výkon, záťaž 60s - 120s
open_file_cache max Pamäť, počet súborov 1000 - 100000

Správne nastavenie limitov je kľúčové pre stabilitu, výkon a bezpečnosť Nginx. Často si vyžaduje monitorovanie a iteratívne doladenie.