Bloglar sahifasiga qaytish

Rate Limiting va Reverse Proxy bilan Ishlashda E'tiborli Bo‘ling!

28-avgust, 2025

Rate Limiting va Reverse Proxy bilan Ishlashda E'tiborli Bo‘ling!

Assalomu alaykum! Bugun backend loyihalarida rate limiting va reverse proxy bilan ishlashda muhim jihatlarni muhokama qilamiz. Yuqori trafik yoki DDOS xujumlaridan himoyalanish uchun rate limiting joriy qilish zarur, lekin IP manzil asosida cheklov qo‘yishda ayrim muhim narsalarga albatta e’tibor berish kerak.

1. Nginx bilan Reverse Proxy Sozlamalari

Agar loyihangizda Nginx kabi reverse proxy ishlatayotgan bo‘lsangiz, foydalanuvchining haqiqiy IP manzilini to‘g‘ri olish uchun konfiguratsiyada quyidagi sozlamalarni qo‘shishingiz kerak:


proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
      

Ushbu header’lar foydalanuvchining real IP manzilini backend serveringizga uzatadi. Aks holda server faqat proxy’ning lokal IP manzilini ko‘radi, bu esa rate limiting logikasini buzishi mumkin.

2. Backend’da Proxy’ga Ishonch (Trust Proxy)

Nginx sozlamalarini qilganingizdan keyin ham backend serveringiz ularni standart holatda “ishonchli” deb qabul qilmaydi. Natijada, rate limiter bir nechta foydalanuvchini bitta IP sifatida ko‘rib, ularning hammasini bloklab qo‘yishi mumkin.

Buni hal qilish uchun, agar siz Node.js (Express.js yoki Nest.js) dan foydalanayotgan bo‘lsangiz, quyidagi sozlamani qo‘shishni unutmang:

app.set('trust proxy', true);

app.set('trust proxy', true) quyidagi narsalarni to‘g‘ri ishlashini ta’minlaydi:

  • - req.ip: foydalanuvchining haqiqiy IP manzili olinadi
  • - req.protocol: so‘rov http yoki https ekanligi aniqlanadi
  • - req.secure: HTTPS so‘rov bo‘lsa, uni to‘g‘ri belgilaydi

Agar app.set('trust proxy', false) bo‘lsa (default), Express X-Forwarded-* header’larini e’tiborsiz qoldiradi va faqatgina proxy IP manzilini qaytaradi.

Xulosa

Rate limitingni to‘g‘ri joriy qilish uchun reverse proxy va backend server o‘rtasida to‘liq sinxronizatsiya zarur. Nginx’da header’larni to‘g‘ri sozlab, Node.js’da esa trust proxy opsiyasini yoqsangiz, foydalanuvchilarning haqiqiy IP manzillarini to‘g‘ri aniqlash va xavfsiz rate limiting qilish imkoniyatiga ega bo‘lasiz.

Shaxsiy Tajriba

Maslahatim: agar biznes logika IP manzilni aniq talab qilmasa, uni rate limitingda ishlatmaslik ham mumkin. Yoki yuqoridagi sozlamalarni doim yodda tuting. Aynan mana shu narsaga e’tibor bermaganim sababli yaqinda bitta serviceni qulatib qo‘yganman 🙂

#Backend #NodeJS #Nginx #RateLimiting #ReverseProxy #Experience #WebDevelopment

O'qishda davom eting