کش تهاجمی CSS/JS
داراییها را با GET/HEAD، پاسخهای 200/301/302/304 و TTL یکروزه یا بیشتر سریعتر کنید؛ پارامترهای ردیابی کمپین را از کلید کش حذف کنید.
راهنمای CDN.com.tr
پیکربندی کلید کش دامنه/مسیر، TTL، متدها/وضعیتها، هدرها/کوکیها، بهینهسازی و قواعد محدودیت نرخ.
کش، امنیت، WAF و پاکسازی
پیکربندی کلید کش دامنه/مسیر، TTL، متدها/وضعیتها، هدرها/کوکیها، بهینهسازی و قواعد محدودیت نرخ.
این نمونهها از سناریوهای امن مبتنی بر مبدأ WordPress برای فایلهای استاتیک، رشتههای پرسوجو، هدرها/کوکیها و مسیرهای حساس نشست استفاده میکنند.
داراییها را با GET/HEAD، پاسخهای 200/301/302/304 و TTL یکروزه یا بیشتر سریعتر کنید؛ پارامترهای ردیابی کمپین را از کلید کش حذف کنید.
هنگام وجود کوکی نشست یا سبد خرید، کش را دور بزنید؛ مسیرهای wp-admin و wp-login هرگز نباید وارد کش مشترک شوند.
برای تصمیمهای کش، Set-Cookie یا Cache-Control را نادیده بگیرید، X-Origin-Debug/X-Powered-By را از کاربران پنهان کنید و دیباگ upstream را فقط بهصورت موقت فعال کنید.
برای مسیرهای شبهAPI، فقط پارامترهای پرسوجویی که محتوا را تغییر میدهند در کلید کش بگنجانید و یک محدودیت درخواست تعیین کنید.
پیش از تغییر رفتار، قاعده را با دامنه، پروتکل و path regex محدود کنید؛ قواعد گسترده `/` به بازبینی سنجیده نیاز دارند.
پارامترهای پرسوجو را فقط زمانی در کلید کش نگه دارید که محتوا را تغییر دهند؛ پارامترهای ردیابی معمولاً حذف میشوند.
محتوای شخصیسازیشده، سبد خرید و مدیریت باید کش را دور بزنند؛ محتوای استاتیک و ناشناس میتواند TTL دریافت کند.
نادیده گرفتن یک هدر مبدأ برای تصمیمهای کش با پنهان کردن آن از کلاینت متفاوت است.
تنظیمات پیشفرض سطح حساب رفتار کلی را تعیین میکنند؛ Add Rule رفتار دقیق را برای یک دامنه/مسیر مینویسد.
نتیجه مورد انتظار: پنجره قاعده باز میشود و قاعده جدید در محدوده حساب انتخابشده آماده میشود.
cdnctl accounts list
export ACCOUNT_UUID=<selected_account_uuid>
این فیلدها تعیین میکنند قاعده با کدام درخواستها مطابقت پیدا میکند؛ یک regex بیشازحد گسترده میتواند کل سایت را تغییر دهد.
نتیجه مورد انتظار: قاعده فقط با نام میزبان و مسیرهای هدف مطابقت پیدا میکند.
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
برای فایلهای استاتیک، پارامترهای پرسوجوی ردیابی را از کلید کش حذف کنید و فقط گونههای واقعی را نگه دارید.
نتیجه مورد انتظار: اشیای CSS/JSON ناشناس بدون تقسیم کش بر اساس پارامترهای پرسوجوی غیرضروری کش میشوند.
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
مسیرهای مدیریت، ورود، سبد خرید و تسویه باید رفتار مبدأ را حفظ کنند بهجای بازگرداندن hitهای کش.
نتیجه مورد انتظار: درخواستهای نشست، محتوای کششده مشترک را به کاربر دیگری بازنمیگردانند.
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
بهطور جداگانه تصمیم بگیرید که آیا هدرهای مبدأ بر تصمیمهای کش تأثیر میگذارند و آیا به مرورگرها افشا میشوند.
نتیجه مورد انتظار: هدرهای مبدأ بهصورت سنجیده کنترل میشوند و دیباگ در ترافیک تولید فعال باقی نمیماند.
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
چون Save میتواند جریان اعمال زنده را فعال کند، بررسی نهایی بر پایه مسیر/دامنه/TTL/هدر است.
نتیجه مورد انتظار: پس از موفقیت عملیات، درخواستهای مطابق رفتار جدید کش/هدر/محدودیت نرخ را نشان میدهند.
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/"
بخش مدیریت/سبد خرید WordPress کش را دور میزند در حالی که داراییهای استاتیک و مسیرهای JSON ناشناس بهصورت عمدی کش میشوند.
تأیید سهحالته را از صفحهٔ امنیت فعال کنید، حالت «همه» را آگاهانه به کار ببرید و نرخ موفقیت را بخوانید.
همهٔ کنترلهای امنیتی سطح حساب در یک صفحهٔ امنیت جمع شدهاند: کلید WAF برای کل سایت، محافظت در برابر رباتها با JS Challenge، مسدودسازی IP و کشور، محافظت hotlink، محدودیت نرخ درخواست و انقضای لینک. هر ذخیره بهصورت خودکار به edge میرسد — مرحلهٔ انتشار جداگانهای وجود ندارد.
از لاگهای WAF برای توضیح ترافیک مسدود یا چالششده بدون افشای سامانههای لاگ داخلی استفاده کنید.
یک مسیر، مسیر ذخیرهشده یا کل حساب را پاکسازی کنید و کش CDN را از کش مرورگر جدا کنید.
هر شیء کششده زیر کلیدی ذخیره میشود که از خود درخواست ساخته میشود — طرح (scheme)، میزبان، مسیر و رشته کوئری. یک پاکسازی فقط زمانی یک ورودی را پاک میکند که دقیقاً همان کلید را نشانه بگیرد. درک همین یک ایده تقریباً همه موارد «پاکسازی کار نکرد» را توضیح میدهد.
از هدر پاسخ X-Proxy-Cache-MT استفاده کنید تا دقیقاً ببینید CDN با یک درخواست چه کرده و تأیید کنید که کش طبق انتظار کار میکند.