مقدمهای بر ماژول limit_req در Nginx
ماژول limit_req در Nginx به ما این امکان را میدهد تا تعداد درخواستهای ورودی به سرور را کنترل کنیم. این کنترل به ما کمک میکند تا از حملات DDoS و سایر فعالیتهای مخرب جلوگیری کنیم. این ماژول به ما این امکان را میدهد که در صورت دسترسی بیش از حد به منابع، درخواستهای اضافی را مسدود کنیم.
علاوهبراین، ماژول limit_req برای تعیین محدودیتهای مربوط به نرخ درخواستها بسیار مفید است. بهعنوانمثال، میتوانیم تعیین کنیم که هر کاربر تنها میتواند در مدت زمان خاصی، تعداد محدودی درخواست ارسال کند. این موضوع به ویژه برای سیستمهایی که نیاز به کنترل ترافیک بیشتری دارند، بسیار حائز اهمیت است.
در اینجا ما به تکنیک limit_req_dry_run میپردازیم. این ویژگی به ما اجازه میدهد تا قبل از اعمال محدودیتها و مسدود کردن درخواستها، رفتار سرور را در زمان آزمایش مشاهده کنیم. به عبارت دیگر، با استفاده از dry_run، میتوانیم ببینیم که چه درخواستهایی ممکن است تحت محدودیت قرار گیرند بدون اینکه به هیچ یک از کاربران آسیبی برسد.
در این مقاله، نحوه استفاده از limit_req_dry_run را بررسی خواهیم کرد و بههمراه یک مثال عملی به شما آموزش میدهیم که چگونه این ویژگی را پیکربندی کنید. با یادگیری صحیح این ماژول، میتوانید امنیت سرور خود را افزایش دهید و از تجربه کاربران به بهترین نحو حفاظت کنید.
تنظیمات ماژول limit_req_dry_run
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location / {
limit_req zone=one burst=5 dry_run;
}
}
}
توضیحات خط به خط کد
http {
بلاک اصلی تنظیمات سرور Nginx را آغاز میکند.
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
این خط یک منطقه محدودیت درخواست ایجاد میکند که بر اساس آدرس IP کاربر، حداکثر 1 درخواست در ثانیه را مجاز میسازد.
server {
بلاک تنظیمات مربوط به سرور را آغاز میکند.
location / {
این بلاک تنظیمات مربوط به مسیر ریشه وبسایت را مشخص میکند.
limit_req zone=one burst=5 dry_run;
این خط به Nginx میگوید که تا 5 درخواست اضافی بعد از محدودیت اصلی، مجاز است و در صورت وقوع، فقط گزارش میدهد بدون اینکه درخواستها را مسدود کند زیرا از گزینه dry_run استفاده شده است.
}
به پایان رسیدن بلاک location
را نشان میدهد.
}
به پایان رسیدن بلاک server
را نشان میدهد.
}
به پایان رسیدن بلاک http
را نشان میدهد.