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>
cdnctl cdn advanced-rules list --account "$ACCOUNT_UUID" --format table
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
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-static-assets.json
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
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file 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
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-wordpress-sensitive.json
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
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-headers-debug.json
6

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

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

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

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

معادل cdnctl
cdnctl cdn advanced-rules create --account "$ACCOUNT_UUID" --file rule-headers-debug.json
cdnctl operations list --account "$ACCOUNT_UUID"
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

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