Nginx

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.

Bu bob โ€” server muhitiga oid. Bu yerdagi buyruqlar va konfiguratsiya (config) misollari Linux serverida ishlaydi. Ularni brauzerda ishga tushirib bo'lmaydi, shuning uchun barcha misollar statik โ€” ya'ni tushunib o'qish uchun keltirilgan. Har bir buyruq va direktivani mazmunini anglagan holda o'rganing.

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.

Aynan shu sabablarga ko'ra Nginx tez orada dunyodagi eng yuklama ko'radigan saytlar tomonidan qabul qilindi va hozirda internetdagi eng band saytlarning katta qismiga xizmat qiladi.

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:

Amalda ko'pincha ularni birgalikda ishlatishadi: Nginx oldinda turadi (statik fayllar va reverse proxy uchun), Apache esa orqada dinamik kontentni (masalan, eski PHP ilovalarini) qayta ishlaydi. Lekin zamonaviy loyihalarda ko'pincha faqat Nginx yetarli.

Qayerda ishlatiladi

Nginx quyidagi holatlarda keng qo'llaniladi:

Xulosa