Loading...

راهنمای CDN.com.tr

تعریف رفتار کش با Add Rule

پیکربندی کلید کش دامنه/مسیر، TTL، متدها/وضعیت‌ها، هدرها/کوکی‌ها، بهینه‌سازی و قواعد محدودیت نرخ.

تعریف رفتار کش با Add Rule

پیکربندی کلید کش دامنه/مسیر، TTL، متدها/وضعیت‌ها، هدرها/کوکی‌ها، بهینه‌سازی و قواعد محدودیت نرخ.

مسیر در پنل

  1. Management Panel
  2. CDN Accounts
  3. Advanced Management
  4. Add Rule
  5. Save / Apply Changes

Add Rule چه مشکلی را حل می‌کند؟

این نمونه‌ها از سناریوهای امن مبتنی بر مبدأ WordPress برای فایل‌های استاتیک، رشته‌های پرس‌وجو، هدرها/کوکی‌ها و مسیرهای حساس نشست استفاده می‌کنند.

کش دارایی استاتیک

کش تهاجمی CSS/JS

دارایی‌ها را با GET/HEAD، پاسخ‌های 200/301/302/304 و TTL یک‌روزه یا بیشتر سریع‌تر کنید؛ پارامترهای ردیابی کمپین را از کلید کش حذف کنید.

Pull / Push / Hosting Default، CNAME یا Full DNS
نشست WordPress

دور زدن admin، login، cart و checkout

هنگام وجود کوکی نشست یا سبد خرید، کش را دور بزنید؛ مسیرهای wp-admin و wp-login هرگز نباید وارد کش مشترک شوند.

پلتفرم WordPress Custom domain
بهداشت هدر

پاک‌سازی هدرهای مبدأ و دیباگ ایمن

برای تصمیم‌های کش، Set-Cookie یا Cache-Control را نادیده بگیرید، X-Origin-Debug/X-Powered-By را از کاربران پنهان کنید و دیباگ upstream را فقط به‌صورت موقت فعال کنید.

Pull CDN هر روش تحویل
نقطه پایانی پرهزینه

محدودیت نرخ و مجازسازی پارامترهای پرس‌وجو

برای مسیرهای شبه‌API، فقط پارامترهای پرس‌وجویی که محتوا را تغییر می‌دهند در کلید کش بگنجانید و یک محدودیت درخواست تعیین کنید.

مبدأ پویا Default، CNAME یا Full DNS

پیش‌نیازها

  • یک حساب و نام میزبان باید انتخاب شده باشد.
  • ذخیره یک Add Rule می‌تواند جریان استقرار/اعمال زنده را فعال کند؛ ابتدا مسیر، دامنه و ترتیب قواعد را بازبینی کنید.
  • تصاویر از مقادیری مانند `www.example.com` به‌جای دامنه‌های واقعی مشتری استفاده می‌کنند.
  • برای اپلیکیشن‌های مبتنی بر نشست مانند WordPress، پیش از کش گسترده، قواعد دور زدن admin/login/cart را بنویسید.

مدل تصمیم‌گیری

ابتدا محدوده

پیش از تغییر رفتار، قاعده را با دامنه، پروتکل و path regex محدود کنید؛ قواعد گسترده `/` به بازبینی سنجیده نیاز دارند.

  • دامنه سرویس: کدام نام میزبان تحت تأثیر قرار می‌گیرد؟
  • نوع: آیا HTTP و/یا HTTP-2 لازم است؟
  • Path Regex: فایل، پوشه یا نقطه پایانی دقیق؟

مدل پرس‌وجوی کلید کش

پارامترهای پرس‌وجو را فقط زمانی در کلید کش نگه دارید که محتوا را تغییر دهند؛ پارامترهای ردیابی معمولاً حذف می‌شوند.

  • پرس‌وجوی کامل: هر پارامتر یک شیء کش جداگانه می‌سازد.
  • نادیده گرفتن همه/فهرست‌شده‌ها: پارامترهای کمپین را ادغام می‌کند.
  • مجازسازی فهرست‌شده‌ها: فقط پارامترهایی مانند `lang` یا `v` را نگه می‌دارد.

Bypass یا TTL؟

محتوای شخصی‌سازی‌شده، سبد خرید و مدیریت باید کش را دور بزنند؛ محتوای استاتیک و ناشناس می‌تواند TTL دریافت کند.

  • Bypass Cache: مسیرهای نشست/مدیریت/سبد خرید.
  • Cache Expire Time: محتوای استاتیک و ناشناس.
  • Response TTL: مدت‌های جداگانه برای 404/500 و سایر وضعیت‌ها.

رفتار هدر و کوکی

نادیده گرفتن یک هدر مبدأ برای تصمیم‌های کش با پنهان کردن آن از کلاینت متفاوت است.

  • Ignore Headers: حذف هدرها از تصمیم‌های کش CDN.
  • Hide Headers: عدم افشای هدرهای پاسخ به مرورگر.
  • Bypass by Cookie: دور زدن کش هنگام وجود کوکی.

راهنمای گام‌به‌گام

1

بازکردن Add Rule از Advanced Management

تنظیمات پیش‌فرض سطح حساب رفتار کلی را تعیین می‌کنند؛ Add Rule رفتار دقیق را برای یک دامنه/مسیر می‌نویسد.

  • حساب هدف را از CDN Accounts انتخاب کنید.
  • Advanced Management را باز کنید.
  • روی Add Rule کلیک کنید.

نتیجه مورد انتظار: پنجره قاعده باز می‌شود و قاعده جدید در محدوده حساب انتخاب‌شده آماده می‌شود.

معادل cdnctl
cdnctl accounts list
export ACCOUNT_UUID=<selected_account_uuid>
2

محدودسازی دامنه، پروتکل و محدوده path regex

این فیلدها تعیین می‌کنند قاعده با کدام درخواست‌ها مطابقت پیدا می‌کند؛ یک regex بیش‌ازحد گسترده می‌تواند کل سایت را تغییر دهد.

  • نام میزبان را در Service Domain Name انتخاب کنید.
  • HTTP و/یا HTTP-2 را انتخاب کنید.
  • یک الگوی فایل، پوشه یا نقطه پایانی در Path Regex وارد کنید.
  • در صورت نیاز یک پیش‌تنظیم کش انتخاب کنید.

نتیجه مورد انتظار: قاعده فقط با نام میزبان و مسیرهای هدف مطابقت پیدا می‌کند.

معادل cdnctl
cat > rule-static-assets.json <<EOF
{"server_domain_names":["www.example.com"],"type":["http","http2"],"path_regex":"^/cdn-help/rules/(cache-demo\\.css|query-demo\\.json)$"}
EOF
3

تنظیم کلید کش، TTL، متدها و وضعیت‌ها

برای فایل‌های استاتیک، پارامترهای پرس‌وجوی ردیابی را از کلید کش حذف کنید و فقط گونه‌های واقعی را نگه دارید.

  • در Cache Key Query Params گزینه Ignore listed params یا Allow listed params را انتخاب کنید.
  • Cache Expire Time را وارد کنید.
  • Allowed Cache Methods و Allowed Cache Responses را محدود کنید.
  • در صورت نیاز مقادیر TTL به‌ازای هر وضعیت را اضافه کنید.

نتیجه مورد انتظار: اشیای CSS/JSON ناشناس بدون تقسیم کش بر اساس پارامترهای پرس‌وجوی غیرضروری کش می‌شوند.

معادل cdnctl
jq '. + {"cache_query_mode":"ignore_list","cache_query_params":["utm_*","gclid","fbclid","msclkid"],"cache_valid_time":"1 day","allowed_cache_methods":["GET","HEAD"],"allowed_cache_responses":["200","301","302","304"],"response_cache_times":{"200":"1 day","301":"1 week","302":"2 hours","304":"1 day"}}' rule-static-assets.json > rule-static-assets-cache.json
4

خارج نگه داشتن مسیرهای نشست WordPress از کش

مسیرهای مدیریت، ورود، سبد خرید و تسویه باید رفتار مبدأ را حفظ کنند به‌جای بازگرداندن hitهای کش.

  • Path Regex را به مسیرهای `/wp-admin`، `wp-login.php`، `cart` یا `checkout` محدود کنید.
  • Bypass Cache را روشن کنید.
  • کوکی‌های نشست/سبد خرید را خط‌به‌خط در Bypass by Cookie وارد کنید.
  • در صورت نیاز قواعد Request Limit یا hotlink را اضافه کنید.

نتیجه مورد انتظار: درخواست‌های نشست، محتوای کش‌شده مشترک را به کاربر دیگری بازنمی‌گردانند.

معادل cdnctl
cat > rule-wordpress-sensitive.json <<EOF
{"server_domain_names":["www.example.com"],"type":["http","http2"],"path_regex":"^/(wp-admin|wp-login\\.php|cart|checkout)(/.*)?$","bypass":"on","bypass_by_cookie":"wordpress_logged_in\nwoocommerce_cart_hash\nwp_woocommerce_session_","limit":30,"per_time":10}
EOF
5

اتصال هدرها، کوکی‌ها، بهینه‌سازی و دیباگ

به‌طور جداگانه تصمیم بگیرید که آیا هدرهای مبدأ بر تصمیم‌های کش تأثیر می‌گذارند و آیا به مرورگرها افشا می‌شوند.

  • برای هدرهایی که نباید بر تصمیم‌های کش تأثیر بگذارند از Ignore Headers استفاده کنید.
  • برای هدرهایی که نباید به کلاینت‌ها افشا شوند از Hide Headers استفاده کنید.
  • در صورت نیاز Custom Headers درخواست را اضافه کنید.
  • Debug upstream headers را فقط در طول آزمایش موقت فعال کنید.
  • Image optimization و Google pagespeed را فقط روی مسیرهای محدودشده آزمایش کنید.

نتیجه مورد انتظار: هدرهای مبدأ به‌صورت سنجیده کنترل می‌شوند و دیباگ در ترافیک تولید فعال باقی نمی‌ماند.

معادل cdnctl
jq '. + {"ignore_headers":["Cache-Control","Set-Cookie"],"hide_headers":["X-Origin-Debug","X-Powered-By"],"custom_headers":"X-Forwarded-Host: $host\nX-CDN-Rule-Debug: temporary","debug_upstream_headers":true,"image_optimization":"on","white_space":"on"}' rule-static-assets-cache.json > rule-headers-debug.json
6

ذخیره، مشاهده استقرار و تأیید URL عمومی

چون Save می‌تواند جریان اعمال زنده را فعال کند، بررسی نهایی بر پایه مسیر/دامنه/TTL/هدر است.

  • پیش از ذخیره، فیلدهای تغییریافته و ترتیب قواعد را بازبینی کنید.
  • پس از Save، وضعیت Operations یا Apply Changes را زیر نظر بگیرید.
  • وضعیت، هدرهای کش، هدرهای پنهان و دور زدن کوکی را روی URL عمومی آزمایش کنید.

نتیجه مورد انتظار: پس از موفقیت عملیات، درخواست‌های مطابق رفتار جدید کش/هدر/محدودیت نرخ را نشان می‌دهند.

معادل cdnctl
curl -I "https://www.example.com/cdn-help/rules/cache-demo.css?utm_source=test"
curl -I -H "Cookie: wordpress_logged_in=redacted" "https://www.example.com/wp-admin/"

راستی‌آزمایی

  • ترتیب قواعد و فیلدهای تغییریافته بازبینی می‌شوند.
  • regexهای گسترده `/` به تأیید صریح نیاز دارند.
  • Debug upstream headers پس از آزمایش خاموش می‌شوند.
  • پس از اعمال، آدرس عمومی، کد وضعیت، رفتار کوئری cache-key و نتیجه هدرها/کوکی‌ها با curl یا ابزارهای توسعه‌دهنده مرورگر بررسی می‌شوند.
  • اگر cdnctl 0.1.2 هنوز دستورات قوانین پیشرفته را ارائه نمی‌دهد، همان payload را از طریق مسیر API عمومی `/api/advanced_managements/{account_uuid}/store` ارسال کنید.

موارد کاربرد

بخش مدیریت/سبد خرید WordPress کش را دور می‌زند در حالی که دارایی‌های استاتیک و مسیرهای JSON ناشناس به‌صورت عمدی کش می‌شوند.

جریان کاری سریع

  1. بازکردن Advanced Management.
  2. محدودسازی درخواست با Add Rule.
  3. پر کردن فیلدهای کش، هدر/کوکی و امنیت.
  4. پس از Save، عملیات و URL عمومی را تأیید کنید.

بررسی‌ها

  • ترتیب قواعد روشن است.
  • path regex از حد لازم گسترده‌تر نیست.
  • هدرهای دیباگ پس از آزمایش غیرفعال می‌شوند.
  • فیلدهای تغییریافته پیش از ذخیره نمایان‌اند.

صفحات مرتبط

صفحهٔ امنیت: WAF، مسدودسازی IP و کشور، hotlink، محدودیت نرخ

همهٔ کنترل‌های امنیتی سطح حساب در یک صفحهٔ امنیت جمع شده‌اند: کلید WAF برای کل سایت، محافظت در برابر ربات‌ها با JS Challenge، مسدودسازی IP و کشور، محافظت hotlink، محدودیت نرخ درخواست و انقضای لینک. هر ذخیره به‌صورت خودکار به edge می‌رسد — مرحلهٔ انتشار جداگانه‌ای وجود ندارد.

خواندن لاگ‌های WAF

از لاگ‌های WAF برای توضیح ترافیک مسدود یا چالش‌شده بدون افشای سامانه‌های لاگ داخلی استفاده کنید.

کلید کش و پاک‌سازی: چرا «پاک‌سازی کردم اما هنوز قدیمی است» اتفاق می‌افتد

هر شیء کش‌شده زیر کلیدی ذخیره می‌شود که از خود درخواست ساخته می‌شود — طرح (scheme)، میزبان، مسیر و رشته کوئری. یک پاک‌سازی فقط زمانی یک ورودی را پاک می‌کند که دقیقاً همان کلید را نشانه بگیرد. درک همین یک ایده تقریباً همه موارد «پاک‌سازی کار نکرد» را توضیح می‌دهد.