محدودیت تعداد درخواست
Rate Limiting یا محدودیت نرخ، راهکاری برای کنترل ترافیک ورودی به یک شبکه است. برای نمونه با استفاده از Rate Limit میتوان مشخص کرد که در هر دقیقه کاربر فقط مجاز به ارسال تعداد مشخصی درخواست (Request) باشد و اگر تعداد درخواستها از این میزان بیشتر شد، خطا داده شود. هدف از پیادهسازی Rate limiting عبارت است از:
- مدیریت بهتر جریان ترافیک
- افزایش امنیت با پیشگیری از بروز حملاتی همچون DDoS، حملات Brute Force یا هر نوع حملهی مخرب دیگری در لایهی اپلیکیشن
تنظیمات Rate Limiting ابر آروان
با استفاده از قابلیت Rate Limiting ابر آروان، میتوانید تعداد درخواست بهازای هر IP را بر اساس ثانیه، ساعت یا روز به یک مسیر و یا کل دامنهی خود محدود کنید.
با توجه به اینکه قابلیت Rate Limiting ابر آروان امکان تعریف قوانین مختلف در مسیرهای متفاوت را فراهم کرده است، میتوانید برای هر مسیر سیاست و محدودیت متفاوتی داشته باشید.
تنظیمات Rate Limiting در پنل کاربری
برای اعمال یک قانون محدودیت جدید، در پنل کاربری ابر آروان، بخش CDN و در قسمت «محدودیت تعداد درخواستها»، روی گزینهی افزودن قانون کلیک کنید.

در این بخش میتوانید پارامترهای زیر را برای اعمال محدودیت تنظیم کنید:
- مسیر محدودیت
- توضیحات
- تعداد درخواست
- بازهی زمانی
- متدهای مجاز
- لیست IPهای مجاز
توجه داشته باشید که شیوهی ورود مسیر باید بر اساس الگوی Glob باشد.

در قسمت محدودیت، دو بخش «تعداد درخواست» و «بازهی زمانی» وجود دارند. عدد وارد شده در بخش تعداد درخواست، بیشترین تعداد درخواستهای ارسالی از یک IP در بازهی زمانی که مشخص میکنید را نشان میدهد. اگر تعداد درخواست ارسالی IP در آن بازهی زمانی از این میزان بیشتر شود، با محدودیت مواجه شده و خطای ۴۲۹ دریافت خواهد کرد. از سوی دیگر، بخش «بازهی زمانی» مشخصکنندهی مدت زمانی است که «تعداد درخواست» مشخصشده، از یک IP میتواند ارسال شود. اگر در این بازه تعداد بیشتری درخواست از IP یکسان ارسال شود، کاربر با محدودیت و خطای ۴۲۹ مواجه میشود.
پس از مشخص کردن این دو مقدار، میتوانید تعیین کنید اگر از یک IP بیش از حد مجاز درخواست داشتید، برای یک مدت زمان مشخص، درخواستهای این IP با کد وضعیت ۴۲۹ مسدود شود.
در ادامه، لیست متدها و IP های مجاز قرار دارد که محدودیت تعریف شده در این قانون شامل متدها و IP های وارد شده در آن نخواهد بود. شما میتوانید در این دو بخش مشخص کنید روی چه متدهای HTTP و IPهایی این محدودیت اعمال نشود.

این بخش و بخش توضیحات بخشهایی هستند که ورود اطلاعات در آنها ضروری نیست و میتوانند خالی بمانند.
در انتها پس از ثبت اطلاعات مورد نظر و با انتخاب گزینهی ذخیره، محدودیت اعمال خواهد شد.
تعیین رفتار ماژول محدودیت تعداد درخواست
در ماژول محدودیت تعداد درخواست (Rate Limit) میتوان مشخص کرد اگر نرخ درخواست برای یک مسیر خاص بیشتر از حد تعریف شده باشد ابر آروان باید چه رفتاری از خود در برابر درخواستها نشان دهد. در این حالت میتوان درخواستهای بعدی را مسدود یا با چالش DDoS مواجه کرد. با انتخاب چالش DDoS میتوان سطح محافظت و همچنین مدت زمان اعتبار چالش را هم تعیین کرد.

ایجاد یک قانون با عملگر چالش با استفاده از API:
curl --location --request POST 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/rate-limit/rules' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--header 'origin: https://panel.arvancloud.ir' \
--header 'pragma: no-cache' \
--data-raw '{"is_enabled":true,"url_pattern":"example.com/**","description":"","exclude_sources":[],"rate":1,"burst":4000000,"block_duration":0,"time_duration":10,"allowed_methods":[],"action":"challenge","action_details":{"mode":1,"ttl":120,"https_only":false}}'
- در ایجاد یک قانون با عملگر چالش از طریق API پارامتر mode میتواند برابر با سه مقدار 1 و 2 و 3 باشد که مقدار یک برابر چالش کوکی، مقدار دو برابر با چالش js و مقدار 3 برابر با چالش کپچا است.
- پارامتر TTL بیانگر مدت زمانی است که چالش DDoS معتبر است و تا زمان انقضای آن کاربر دوباره احراز وضعیت نمیشود.