Nginx nima?
Nginx (o'qilishi: "engine-x") โ bugungi kunda internetdagi eng ko'p ishlatiladigan veb-serverlardan biri. Deyarli har bir zamonaviy sayt yoki API uning ortida qandaydir tarzda Nginx'dan foydalanadi. Ushbu darsda veb-server nima ekanligini, Nginx qanday paydo bo'lganini va u qanday vazifalarni bajarishini chuqur o'rganamiz.
Veb-server nima?
Veb-server โ bu ikki ma'noga ega tushuncha. Birinchisi, jismoniy (yoki virtual) kompyuter โ internetga ulangan va doimo ishlab turadigan mashina. Ikkinchisi โ o'sha mashinada ishlaydigan dastur, u brauzerlardan (klientlardan) keladigan HTTP so'rovlarni qabul qiladi va javob qaytaradi.
Nginx โ aynan ikkinchi ma'nodagi veb-server, ya'ni dastur. U tarmoqning ma'lum bir portini (odatda 80 va 443) "tinglab" turadi. Kimdir brauzerda saytingiz manzilini yozganda, brauzer o'sha portga HTTP so'rov yuboradi. Nginx bu so'rovni qabul qiladi, kerakli faylni topadi yoki boshqa dasturga uzatadi va natijani brauzerga qaytaradi.
Oddiy qilib aytganda: brauzer so'raydi ("menga index.html sahifasini ber"), Nginx esa javob beradi (o'sha faylning mazmunini yuboradi).
Nginx tarixi va nega mashhur
Nginx'ni rus dasturchisi Igor Sysoev yaratgan va u birinchi marta 2004-yilda ommaga chiqarilgan. O'sha davrdagi mashhur veb-server Apache bir vaqtning o'zida juda ko'p ulanishni (masalan, o'n minglab) samarali boshqara olmasdi โ bu C10k muammosi (ya'ni bir vaqtda 10 000 ulanishni ushlab turish muammosi) deb atalgan.
Nginx aynan shu muammoni hal qilish uchun yaratildi. U asinxron, hodisaga asoslangan (event-driven) arxitekturaga ega. Bu shuni anglatadiki, Nginx har bir ulanish uchun alohida jarayon (process) yoki oqim (thread) ochmaydi โ buning o'rniga bitta jarayon minglab ulanishni bir vaqtda, kam xotira sarflab boshqaradi.
- Tezkorlik โ statik fayllarni juda tez uzatadi;
- Kam resurs โ oz miqdorda operativ xotira (RAM) va protsessor (CPU) sarflaydi;
- Barqarorlik โ yuqori yuklama ostida ham ishonchli ishlaydi;
- Moslashuvchanlik โ veb-server, proxy, load balancer sifatida ishlata olinadi.
Nginx qanday vazifalarni bajaradi
Nginx ko'p qirrali vosita. U bir necha xil rolda ishlashi mumkin va ko'pincha bu rollarni bir vaqtda bajaradi. Asosiy vazifalari quyidagilar:
1. Statik fayllarga xizmat ko'rsatish
Eng asosiy vazifasi โ disk'da yotgan statik fayllarni (HTML, CSS, JavaScript, rasmlar, videolar) brauzerga uzatish. Nginx bu ishni juda samarali bajaradi, chunki u aynan shu maqsad uchun optimallashtirilgan.
2. Reverse proxy (teskari proksi)
Nginx brauzerdan kelgan so'rovni qabul qilib, uni orqa fonda ishlayotgan boshqa dasturga (masalan, Node.js, Python yoki PHP ilovasiga) uzatishi mumkin. Ilova javob berganda, Nginx uni brauzerga qaytaradi. Bunda brauzer orqadagi ilovani ko'rmaydi โ u faqat Nginx bilan gaplashadi.
3. Load balancer (yuk taqsimlagich)
Agar sizda bir xil ilovaning bir nechta nusxasi (serveri) bo'lsa, Nginx kelayotgan so'rovlarni ular orasida taqsimlab beradi. Bu bitta serverga tushadigan yukni kamaytiradi va saytni sekinlashib qolishdan saqlaydi.
4. SSL termination (SSL yakunlash)
HTTPS (shifrlangan ulanish) uchun serverga sertifikat o'rnatiladi. Nginx shifrlangan trafikni ochib (deshifratsiya qilib), oddiy so'rovni orqadagi ilovaga uzatadi. Shu tarzda ilovaning o'zi shifrlash bilan ovora bo'lmaydi โ bu og'ir ishni Nginx bajaradi.
Apache bilan qisqa taqqoslash
Apache HTTP Server (qisqacha Apache) โ Nginx'dan oldin paydo bo'lgan va uzoq yillar hukmronlik qilgan veb-server. Ular bir-biriga raqib, lekin arxitekturasi jihatidan farq qiladi:
- Model: Apache an'anaviy ravishda har bir ulanishga alohida jarayon/oqim ajratadi; Nginx esa asinxron, hodisaga asoslangan modelda ishlaydi;
- Statik fayllar: statik kontentda Nginx odatda tezroq va kamroq xotira sarflaydi;
- Konfiguratsiya: Apache
.htaccessfayllari orqali papka darajasida sozlashga imkon beradi; Nginx'da bunday mexanizm yo'q, barcha sozlash markaziy config'da bo'ladi (bu tezroq ishlaydi); - Ko'p ulanish: juda katta miqdordagi bir vaqtli ulanishlarda Nginx sezilarli ustunlikka ega.
Qayerda ishlatiladi
Nginx quyidagi holatlarda keng qo'llaniladi:
- Statik saytlar va bir sahifali ilovalar (SPA โ React, Vue, Angular) uchun fayl serveri;
- Node.js, Django, Laravel kabi ilovalar oldida reverse proxy sifatida;
- Yuqori trafikli saytlarda bir nechta server orasida yukni taqsimlash uchun;
- HTTPS'ni ta'minlash va SSL sertifikatlarni boshqarish uchun;
- API shlyuzi (gateway) va mikroservis arxitekturasida marshrutlash uchun;
- Media (rasm, video) fayllarni keshlash va tez uzatish uchun.
Xulosa
- Nginx โ asinxron, tezkor va kam resurs sarflaydigan veb-server dasturi;
- U 2004-yilda C10k muammosini (ko'p bir vaqtli ulanish) hal qilish uchun yaratilgan;
- Asosiy vazifalari: statik fayllarga xizmat, reverse proxy, load balancing va SSL termination;
- Apache'dan farqli o'laroq, u hodisaga asoslangan modelda ishlaydi va statik kontentda samaraliroq;
- Zamonaviy veb-loyihalarning katta qismida shu yoki boshqa rolda ishlatiladi.