در این صفحه، هدرهایی را بررسی میکنیم که سرویس CDN ستون به درخواست یا پاسخ اضافه میکند. برای افزودن، تغییر یا حذف هدر روی قانون مسیر، سفارشیسازی هدرهای HTTP و برای ساخت قانون مسیر، هدایت درخواستها به آپاستریم با قوانین مسیر را دنبال میکنیم.
هدرها در دو جهت اضافه میشوند:
- آپاستریم: هدر روی درخواست کاربر، پیش از رسیدن به مبدا
- داوناستریم: هدر روی پاسخ، پیش از رسیدن به کلاینت
سفارشیسازی هر جهت روی همان قانون مسیر انجام میشود. هدر Host روی آپاستریم تنظیم میشود، نه روی قانون مسیر.
هدرهای آپاستریم
لبه این هدرها را روی درخواست میگذارد و به مبدا میفرستد. پیکربندی جدا برای هدرهای اختصاصی لازم نیست.
همیشه ارسال میشوند
| هدر | مقدار | معنی |
|---|---|---|
X-Stn-Request-Id | رشته ۳۲ کاراکتری هگز | شناسه یکتای همین درخواست؛ برابر فیلد request_id در لاگ لحظهای و ارسال لاگ |
X-Stn-IP | آدرس IPv4 یا IPv6 | IP واقعی کاربر |
X-Stn-Host | hostname | هاست درخواستی کاربر |
X-Stn-Proto | http یا https | پروتکل کاربر تا CDN |
X-Stn-Country-Code | کد کشور دو حرفی، مثلا IR | کشور مبدا درخواست |
X-Stn-JA4 | اثر انگشت JA4، یا خالی | اثر انگشت TLS ClientHello؛ فقط در HTTPS مقدار دارد |
X-Stn-Known-Bot | نام ربات، یا خالی | اگر درخواست از IP ربات شناختهشده (Google، Bing، OpenAI) آمده باشد |
X-Stn-Accept-Webp | on یا off | پشتیبانی کلاینت از WebP |
X-Forwarded-Host | hostname | هاست درخواستی کاربر؛ معادل Host درخواست |
CDN-Loop | مقدار داخلی لبه | جلوگیری از حلقه بین لبهها |
نمونه X-Stn-Request-Id: 08a131dbebca26070f26c1a334fab774.
نمونه X-Stn-JA4: t13d1517h2_8daaf6152771_0d789d2519e1.
X-Stn-Proto پروتکل کاربر تا CDN است و با پروتکل آپاستریم (لبه تا مبدا) یکی نیست.
مقدار X-Stn-Request-Id با فیلد request_id یکی است. برای کنار هم گذاشتن لاگ CDN و لاگ اپلیکیشن، همین مقدار را در مبدا ثبت میکنیم. فهرست فیلدها: فیلدهای لاگ درخواست. تفاوت لاگ زنده و ارسال لاگ: لاگ لحظهای درخواستها.
مشروط به تفکیک کش
این هدرها فقط وقتی تفکیک کش مربوطه روی قانون مسیر فعال باشد به مبدا میروند.
| هدر | مقدار | شرط ارسال |
|---|---|---|
X-Stn-Device | mobile، tablet یا desktop | تفکیک کش بر اساس دستگاه |
X-Stn-Country | برابر X-Stn-Country-Code | تفکیک کش بر اساس کشور |
X-Stn-Cookie | کلید و مقدار کوکیهای ملاک تفکیک | تفکیک کش بر اساس کوکی |
هر تفکیک تعداد کلید کش را بالا میبرد و نرخ HIT را پایین میآورد. توضیح در کش در CDN ستون چگونه کار میکند؟ است.
هدر Host
Host به مبدا میگوید کدام سایت را سرو کند. سه حالت در آپاستریم:
| حالت | مقدار ارسالی |
|---|---|
| استفاده از دامنه سرور آپاستریم | Host برابر Hostname همان سرور |
| مقدار صریح | همان رشتهای که در هاست هدر (اختیاری) نوشته میشود |
| خالی | Host درخواست کاربر، بدون تغییر |
جدول کامل در مرجع تنظیمات آپاستریم است.
سفارشیسازی
در قانون مسیر، بخش هدر آپاستریم:
| عمل | اثر |
|---|---|
| افزودن یا تغییر | هدر جدید روی درخواست به مبدا، یا بازنویسی مقدار موجود |
| حذف | حذف هدر از درخواست کاربر پیش از رسیدن به مبدا |
هدرهای اختصاصی ستون در جدولهای بالا بهصورت پیشفرض ارسال میشوند؛ برای رسیدن به مبدا لازم نیست دوباره اضافه شوند.
از قانون مسیر نمیتوان Connection و CDN-Loop را حذف یا بازنویسی کرد. Upgrade و Connection را لبه در صورت نیاز (مثلا WebSocket) تنظیم میکند.
هدرهای داوناستریم
لبه این هدرها را روی پاسخ میگذارد و به کلاینت میفرستد.
همیشه ارسال میشوند
| هدر | مقدار | معنی |
|---|---|---|
x-zrk-cs | وضعیت کش | نتیجه تصمیم کش لبه برای همین درخواست |
x-zrk-sn | نام نود، مثلا irancell1 | سرور لبهای که پاسخ را داده است |
x-zrk-us | کد وضعیت HTTP، مثلا 200 | کدی که آپاستریم به لبه داده است؛ در HIT معمولا خالی است |
server | Sotoon CDN | همیشه همین مقدار |
x-zrk-sn با فیلد server در لاگ درخواست و برچسب edge در مانیتورینگ یکی است. جزییات نود در مرجع لبه CDN است.
پاسخ کلاینت را با curl -I میخوانیم:
curl -I https://example.comدر خروجی باید server: Sotoon CDN و هدرهای x-zrk-* دیده شوند.
مقادیر x-zrk-cs
همان مفهوم فیلد cache_status در لاگ لبه است.
| مقدار | معنی |
|---|---|
HIT | پاسخ از کش لبه آمده است |
MISS | در کش نبود؛ از آپاستریم گرفته و در صورت قابلکش بودن ذخیره شده است |
BYPASS | لبه عامدانه کش نکرده است |
STALE | عمر Edge TTL تمام شده و لبه نسخهی منقضی را داده است |
UPDATING | لبه در حال تازهسازی همان کلید است و همزمان نسخهی موجود را میدهد |
EXPIRED | نسخهی کش منقضی بوده و لبه دوباره از آپاستریم گرفته است |
REVALIDATED | لبه اعتبار نسخه را با آپاستریم سنجیده و همان نسخه را نگه داشته است |
پس از Purge ممکن است MISS دیده شود. معنی وضعیتها در کش در CDN ستون چگونه کار میکند؟ است.
سفارشیسازی
در قانون مسیر، بخش هدر داوناستریم:
| عمل | اثر |
|---|---|
| افزودن یا تغییر | هدر جدید روی پاسخ به کاربر، مثلا Strict-Transport-Security |
| حذف | حذف هدر پاسخ مبدا پیش از رسیدن به کاربر، مثلا X-Powered-By |
Cache-Control از تنظیمات کش همان قانون مسیر هم اثر میگیرد؛ قرارداد TTL در مفهوم کش است.
از قانون مسیر نمیتوان Connection، CDN-Loop و Date را حذف یا بازنویسی کرد.
