- مستندات
- Rules
قوانین Header
هدرهای HTTP را روی درخواست به سرور خود و پاسخ به بازدیدکنندهها اضافه، تغییر یا حذف کنید.
در این صفحه
header rule هدرهای HTTP را روی edge ویرایش میکند — روی request به سرور
شما، response به بازدیدکننده، یا هر دو — مثلاً اضافهکردن
Content-Security-Policy، X-Frame-Options، یا یک رمز مشترک که ثابت کند
ترافیک از nsin عبور کرده.
دو جهت
| اعمال میشود | سرور شما میبیند | بازدیدکننده میبیند | |
|---|---|---|---|
| Request | پیش از تماس nsin با سرور شما | بله | خیر |
| Response | پیش از خروج پاسخ از edge | خیر | بله |
ویرایشهای response بعد از cache اتفاق میافتند: یک صفحهی cache شده هم هدرهای امروز را میگیرد، بدون نیاز به purge.
عملیاتها
یک قانون یک فهرست مرتب از عملیات است، هر کدام یک جهت، یک کنش، یک هدر و (برای set/add) یک مقدار دارند.
| کنش | چه میکند |
|---|---|
| Set | هرچه هست را با مقدار شما جایگزین میکند. |
| Add | مقدار شما را اضافه میکند، هرچه از قبل فرستاده شده میماند. |
| Remove | هدر را کاملاً حذف میکند. مقدار نمیگیرد. |
عملیاتها به ترتیب فهرست اجرا میشوند — روی یک هدر یکسان، بعدی برندهی قبلی است.
یک remove میتواند به * ختم شود: X-Debug-* هر هدری را که با X-Debug-
شروع میشود حذف میکند (set/add به نام دقیق نیاز دارند). فهرست رزروشدهی پایین
همچنان روی هر تطبیقی اعمال میشود، پس یک wildcard هرگز نمیتواند هدری را که nsin
مالک آن است حذف کند.
قوانین جمع میشوند
این تنها نوع قانونی است که همهی قوانین منطبق اجرا میشوند — در بقیه، اولین تطبیق برنده است. یک هدر یکسان، دو قانون: پایینی برنده است. با کشیدن، ترتیب را عوض کنید.
دامنهی اثر
با records، hostname و path محدود کنید — ببینید مرور قوانین.
دو محدودیت مخصوص همینجاست:
- محدودسازی بر اساس IP بازدیدکننده فقط روی قوانین response-only کار میکند. یک هدر request چیزی را که nsin fetch میکند عوض میکند بدون اینکه cache key عوض شود — نسخهی یک بازدیدکننده به همه میرسد.
- رکوردهای Gateway واجد شرایط نیستند. یک hostname Gateway جلوی upstream های مشتریان زیادی میایستد؛ یک هدر credential آنجا به ترافیک دیگری هم میرسد.
Dry run
یک header rule را میتوان در dry run ذخیره کرد: همچنان تطبیق مییابد و log میشود، اما دستنخورده عبور میکند.
سقفها
| محدودیت | مقدار |
|---|---|
| تعداد عملیات در هر قانون | ۱۶ |
| طول یک مقدار | ۴ کیلوبایت |
| مجموع افزوده در هر قانون | ۸ کیلوبایت (نام + مقدارِ هر set/add) |
هر سه در زمان save بررسی میشوند؛ یک قانون بزرگتر از حد بهجای یک 431 بعدی،
همانجا با پیام روشن رد میشود.
مجموع یک درخواست روی همهی قوانین منطبق جمع میشود؛ edge این مجموع را هم روی ۸ کیلوبایت در هر جهت محدود میکند و اضافی را کنار میگذارد. remove ها هرگز در این سقف حساب نمیشوند.
هدرهایی که نمیتوانید تغییر دهید، و چرا
nsin مجموعهی کوچکی از نامها را که خودِ edge محاسبه میکند رد میکند؛ رد شدن یک
400 با نام هدر و دلیل برمیگرداند.
| جهت | هدر | چرا |
|---|---|---|
| Request | Host |
نام TLS و cache slot را هم تعیین میکند؛ روی رکورد، origin route یا pool آن را override کنید. |
| Request | Content-Length |
از بایتهای forward شده دوباره محاسبه میشود؛ مقدار اشتباه میتواند صفحهای ناقص را ذخیره کند. |
| Request | Transfer-Encoding، Connection، Upgrade، Keep-Alive، Proxy-Connection، TE، Trailer |
Hop-by-hop اند؛ هرگز از edge عبور نمیکنند. |
| Request | X-Forwarded-For، X-Forwarded-Proto، X-Forwarded-Host، X-Forwarded-Port، X-Real-IP، True-Client-IP، Forwarded |
از اتصال واقعی پر میشوند؛ مقدار ثابت بازدیدکننده را جعل میکند. |
| Request | CDN-Loop |
شمارندهی loop که CDN های دیگر میخوانند؛ نشانهی بیگانه از origin های پشت CDN یک 502 میگیرد. |
| Request | Cache-Control، If-None-Match، If-Modified-Since، If-Match، If-Unmodified-Since، If-Range، Range، Accept-Encoding |
توسط edge برای هر مسیر fetch دوباره نوشته میشوند. |
| Request | Sec-WebSocket-* |
یک کلید handshake ساختهشده با قانون، تشخیص تونل را که آن را میخواند بیاثر میکند. |
| Request | Nsn-*، X-Nsin-*، X-Mafar-* |
فضاینام خود nsin؛ نوشتن یکی با قانون یعنی جعل. |
| Response | Content-Length |
از بایتهای واقعاً نوشتهشده دوباره محاسبه میشود. |
| Response | Transfer-Encoding، Connection، Upgrade، Keep-Alive |
باز هم hop-by-hop. |
| Response | Content-Encoding |
متعلق به فشردهساز edge؛ محتوای ذخیرهشده همیشه فشردهنشده است. |
| Response | Vary |
cache روی آن key نمیخورد — تنوع نادرست صفحهی یک بازدیدکننده را به دیگری میرساند. |
| Response | Server |
عمداً آخرین تغییر پیش از خروج پاسخ زده میشود. |
| Response | Strict-Transport-Security |
یکبار دیدهشده قابل پسگرفتن نیست؛ متعلق به نردبان صفحهی Security → HSTS است که مدت را در هر save یک پله بالا میبرد. ببینید هدرهای امنیتی. |
| Response | Nsn-* |
سطح آنالیتیکس و عیبیابی خود nsin. |
استثنا: حذفشان مجاز است
سه هدر request برای set/add رد میشوند اما برای remove مجازند:
Cookie، Authorization، Nsn-Connecting-IP. nsin پیش از refresh یک صفحهی
cache شده credential ها را strip میکند؛ یک remove فقط با همان strip
همداستان است.
Cookie را پیش از سرور خود برای یک صفحهی cacheable drop کنید، یا
Nsn-Connecting-IP را پیش از یک origin شخص ثالث برای نگهداشتن آدرس
بازدیدکنندهها خصوصی.
هدرهایی که nsin برای شما مدیریت میکند
X-Content-Type-Options،Referrer-Policy، حذف fingerprint: توگل هر دامنه — ببینید هدرهای امنیتی.Strict-Transport-Securityو کمینهی نسخهی TLS: در Security → HSTS.- هدرهایی که nsin همیشه اضافه میکند، مثل
Nsn-Connecting-IP: در Proxy Headers فهرست شدهاند.
چیزهایی که یک header rule به آنها نمیرسد
- قوانین خودتان. قوانین header آخر اجرا میشوند، بعد از WAF، تشخیص bot، fingerprinting و rewrite ها.
- WebSocket upgrade ها. یک handshake
101هرگز به هدرهای response نمیرسد؛ عملیات request همچنان اثر دارد. - صفحههای خود nsin. پاسخهای error، challenge، basic-auth و block از edge میآیند، نه از سرور شما.
نمونهها
هدرهای امنیتی برای کل سایت
- Response · set ·
X-Frame-Options·SAMEORIGIN- Response · set ·
X-XSS-Protection·0- Response · set ·
Permissions-Policy·camera=(), microphone=()
اثبات اینکه ترافیک از nsin آمده
- Request · set ·
X-Edge-Secret·a-long-random-stringسرورتان را طوری تنظیم کنید که هرچه این هدر را ندارد رد کند — ببینید اعتماد به هدرهای proxy انسین.
cacheable کردن یک صفحهی marketing
- Path:
/landing/*- Request · remove ·
Cookieسرور دیگر session نمیبیند، پس صفحه میتواند cache شود.
جلوگیری از افشای framework
- Response · remove ·
X-Powered-By- Response · remove ·
X-AspNet-*
سوالهای رایج
یک هدر response اضافه کردم ولی نمیبینمش. بررسی کنید رکورد proxied است، و قانون در dry run نیست. صفحههای error و challenge از nsin میآیند، نه از سرور شما.
بعد از تغییر یک هدر response باید cache را purge کنم؟ نه — بعد از cache اعمال میشود، از همان درخواست بعدی زنده است.
دو قانون یک هدر یکسان را set میکنند. کدام برنده است؟ آنکه پایینتر است. ببینید ترتیب قوانین.
میتوانم کشور بازدیدکننده یا ray id را بهعنوان مقدار بگذارم؟ هنوز نه. مقدارها امروز متن ثابتاند.
یک header rule میتواند جای CORS یا CSP سرور خودم را بگیرد؟ میتواند آن هدرها را اضافه یا override کند؛ اگر اپلیکیشن شما آنها را برای هر پاسخ جداگانه میسازد، کار را به اپلیکیشن بسپارید.