Middle
Nginx serverində hansı məhdudiyyətlər ola bilər və onlar nə ilə əlaqəli ola bilər?
sobes.tech Süni İntellekt
AI-dan cavab
Nginx limitləri performans, təhlükəsizlik və sistem resursları ilə əlaqəli ola bilər.
Əsas limitlər:
worker_processes: Nginx-in işçi proseslərinin sayını məhdudlaşdırır. Bu, prosessor nüvələrinin sayı və mövcud yaddaş həcmi ilə əlaqəlidir. Çox böyük dəyər kontekst keçid xərclərinə səbəb ola bilər, çox kiçik isə resursların səmərəli istifadəsinə mane ola bilər.worker_connections: Bir işçi prosesinin idarə edə biləcəyi maksimum eyni vaxtda əlaqələrin sayı. Bu, əməliyyat sisteminin fayl deskriptorları (ulimit -n) və mövcud yaddaş ilə əlaqəlidir.client_max_body_size: Müştərinin sorğusunun maksimum bədən ölçüsü. Bu, DoS hücumlarının qarşısını almaq üçün çox böyük sorğuların göndərilməsini əngəlləyir.limit_conn/limit_req: IP ünvanından gələn eyni vaxtda əlaqələrin və sorğu sürətinin məhdudlaşdırılması üçün modullar. Bu, DoS hücumlarına və sui-istifadələrə qarşı qoruma üçün istifadə olunur.open_file_cache max: Açıq faylların keşdəki maksimum qeydiyyat sayı. Bu, eyni vaxtda açıq olan faylların sayı və mövcud yaddaş ilə əlaqəlidir. Çox sayda fayl ilə işləyərkən performansı təsir edir (məsələn, statik fayllar, loglar).proxy_buffer_size/proxy_buffers: Proxy ilə ötürülən cavablar üçün bufferlərin ölçüsü və sayı. Bu, yaddaş ilə əlaqəlidir. Yanlış dəyərlər səhvlərə və ya yaddaşın səmərəsiz istifadəsinə səbəb ola bilər.- Timeoutlar:
client_body_timeout: Müştərinin sorğusunun bədən hissəsinin alınması arasında vaxt limiti.client_header_timeout: Müştərinin sorğusunun başlıqlarının alınması arasında vaxt limiti.send_timeout: Məlumatların müştəriyə göndərilməsi arasında vaxt limiti.keepalive_timeout: Keep-alive əlaqələrinin saxlanması üçün vaxt limiti. Bu, əlaqənin stabilliyi və yavaş hücumlara qarşı qoruma ilə əlaqəlidir.
resolver_timeout: DNS adlarının həll olunması üçün vaxt limiti. DNS serverlərinin mövcudluğu və şəbəkənin stabilliyi ilə əlaqəlidir.
Limitlər aşağıdakı amillərdən asılı ola bilər:
- Əməliyyat sistemi: Fayl deskriptorlarının, proseslərin və yaddaşın sistem limitləri.
- Hardware resursları: Prosessor nüvələrinin sayı, RAM yaddaşı, şəbəkə keçid qabiliyyəti.
- Yük: Ehtimal olunan eyni vaxtda istifadəçi sayı, sorğu intensivliyi.
- Nginx konfiqurasiyası: Konfiqurasiya fayllarındakı direktivlər.
- Təhlükəsizlik: DoS hücumlarından, şifrə sındırma cəhdlərindən və digər təhlükələrdən qorunma ehtiyacı.
worker_processes və worker_connections üçün konfiqurasiya nümunəsi:
# CPU-nun mövcud nüvələrinə görə işçi proseslərinin sayını müəyyən edirik.
worker_processes auto;
# Bir işçi prosesinin idarə edə biləcəyi maksimum əlaqə sayı.
# 65535 - Linux üçün tipik dəyər, lakin `ulimit -n` yoxlanmalıdır
# 1024 (varsayılan) * worker_processes - Nginx-in idarə edə biləcəyi ümumi əlaqə sayı.
events {
worker_connections 65535;
}
Limit nümunələri ilə cədvəl:
| Limit | Əlaqə ilə əlaqəli | Tipik dəyər |
|---|---|---|
worker_processes |
CPU | auto |
worker_connections |
Fayl deskriptorları, yaddaş | 1024 - 65535 |
client_max_body_size |
Təhlükəsizlik | 1m - 100m |
limit_conn |
Təhlükəsizlik, yük | Siyasətdən asılıdır |
keepalive_timeout |
Performans, yük | 60s - 120s |
open_file_cache max |
Yaddaş, fayl sayı | 1000 - 100000 |
Düzgün limitlərin konfiqurasiyası Nginx-in stabilliyi, performansı və təhlükəsizliyi üçün həyati əhəmiyyət daşıyır. Bu, tez-tez monitorinq və iterativ tənzimləmə tələb edir.