کش تهاجمی 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>
cdnctl cdn advanced-rules list --account "$ACCOUNT_UUID" --format table
این فیلدها تعیین میکنند قاعده با کدام درخواستها مطابقت پیدا میکند؛ یک 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
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-static-assets.json
برای فایلهای استاتیک، پارامترهای پرسوجوی ردیابی را از کلید کش حذف کنید و فقط گونههای واقعی را نگه دارید.
نتیجه مورد انتظار: اشیای 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
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file 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
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-wordpress-sensitive.json
بهطور جداگانه تصمیم بگیرید که آیا هدرهای مبدأ بر تصمیمهای کش تأثیر میگذارند و آیا به مرورگرها افشا میشوند.
نتیجه مورد انتظار: هدرهای مبدأ بهصورت سنجیده کنترل میشوند و دیباگ در ترافیک تولید فعال باقی نمیماند.
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
چون Save میتواند جریان اعمال زنده را فعال کند، بررسی نهایی بر پایه مسیر/دامنه/TTL/هدر است.
نتیجه مورد انتظار: پس از موفقیت عملیات، درخواستهای مطابق رفتار جدید کش/هدر/محدودیت نرخ را نشان میدهند.
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/"
بخش مدیریت/سبد خرید WordPress کش را دور میزند در حالی که داراییهای استاتیک و مسیرهای JSON ناشناس بهصورت عمدی کش میشوند.
از لاگهای WAF برای توضیح ترافیک مسدود یا چالششده بدون افشای سامانههای لاگ داخلی استفاده کنید.
یک مسیر، مسیر ذخیرهشده یا کل حساب را پاکسازی کنید و کش CDN را از کش مرورگر جدا کنید.
از هدر پاسخ X-Proxy-Cache-MT استفاده کنید تا دقیقاً ببینید CDN با یک درخواست چه کرده و تأیید کنید که کش طبق انتظار کار میکند.