Loading...

راهنمای CDN.com.tr

اتصال به مبدأ: IP واقعی بازدیدکننده، قفل کردن مبدأ، WebSocket و مهلت‌ها

سرورهای لبه آدرس IP بازدیدکننده را در سرآیند X-CDN-Client-IP ارسال می‌کنند. مبدأ خود را فقط با یک سرآیند محرمانه که به هر قانون اضافه می‌کنید به روی CDN باز کنید. WebSocket و درخواست‌های طولانی را به‌ازای هر قانون پیکربندی کنید.

اتصال به مبدأ: IP واقعی بازدیدکننده، قفل کردن مبدأ، WebSocket و مهلت‌ها

سرورهای لبه آدرس IP بازدیدکننده را در سرآیند X-CDN-Client-IP ارسال می‌کنند. مبدأ خود را فقط با یک سرآیند محرمانه که به هر قانون اضافه می‌کنید به روی CDN باز کنید. WebSocket و درخواست‌های طولانی را به‌ازای هر قانون پیکربندی کنید.

موارد کاربرد

یک تیم برنامه وبی با امکان ورود روی سرور خودش اجرا می‌کند و CDN و WAF را جلوی آن قرار می‌دهد. آن‌ها می‌خواهند IP واقعی بازدیدکننده در لاگ‌هایشان باشد، درخواست‌هایی که از مسیر CDN نمی‌آیند را رد کنند و اتصال‌های WebSocket را فعال نگه دارند.

جریان کاری

  1. برنامه خود را طوری تنظیم کنید که IP واقعی بازدیدکننده را از سرآیند X-CDN-Client-IP بخواند.
  2. یک مقدار تصادفی بلند تولید کنید. همان خط را در فیلد سرآیندهای ارسالی به سرور مبدأ هر قانون تحویل در حساب خود بنویسید، برای مثال X-CDN-Auth <مقدار>.
  3. پس از اینکه این سرآیند در همه قوانین فعال شد و دامنه شما به CDN اشاره کرد، درخواست‌های فاقد این سرآیند را روی مبدأ خود رد کنید.
  4. برای مسیرهایی که از WebSocket استفاده می‌کنند، یک قانون جداگانه بسازید و اجازهٔ اتصال‌های WebSocket را فعال کنید. برای درخواست‌های طولانی، مقدار مهلت پاسخ سرور مبدأ (ثانیه) را بالا ببرید.
  5. اگر API شما از PUT، PATCH یا DELETE استفاده می‌کند، این متدها را به فهرست WAF: متدهای HTTP مجاز اضافه کنید.

بررسی‌ها

  • IP واقعی بازدیدکننده در سرآیند X-CDN-Client-IP می‌رسد. این سرآیند یک مقدار واحد دارد و سرور لبه آن را در هر درخواست بازنویسی می‌کند؛ سرآیندی با همین نام که بازدیدکننده بفرستد استفاده نمی‌شود. مقدار آن می‌تواند آدرس IPv6 هم باشد.
  • سرورهای لبه سرآیندهای X-Real-IP و X-Forwarded-For را هم می‌فرستند. اگر از X-Forwarded-For استفاده می‌کنید، راست‌ترین مقدار را بگیرید، نه اولین را؛ بازدیدکننده می‌تواند مقادیر سمت چپ را خودش بنویسد.
  • سرآیندهای ارسالی به سرور مبدأ به‌ازای هر قانون تنظیم می‌شوند: هر سطر یک سرآیند، به‌صورت Header-Name value. وقتی قانون جدیدی اضافه می‌کنید، سرآیند محرمانه را هم به آن اضافه کنید؛ وگرنه مبدأ شما درخواست‌های آن قانون را رد می‌کند.
  • مقدار سرآیند محرمانه را یک مقدار تصادفی با حداقل 32 کاراکتر، فقط حروف و رقم، انتخاب کنید. در قوانینی که از طریق HTTPS به مبدأ شما متصل می‌شوند، این سرآیند رمزنگاری‌شده منتقل می‌شود.
  • به‌جای قفل کردن مبدأ فقط با یک فهرست IP، به سرآیند محرمانه تکیه کنید. آدرس‌های فعلی سرورهای لبه متصل به حساب شما را در صورت درخواست به شما اعلام می‌کنیم.
  • در قانونی که اجازهٔ اتصال‌های WebSocket در آن فعال است، اتصال‌ها به مبدأ شما می‌رسند و تا زمانی که داده جریان دارد باز می‌مانند؛ پاسخ‌های آن مسیر کش نمی‌شوند. WebSocket را نمی‌توان در قانونی که تصاویر را بهینه می‌کند فعال کرد، پس برای مسیر WebSocket یک قانون جداگانه بسازید.
  • مهلت پاسخ سرور مبدأ به‌طور پیش‌فرض 60 ثانیه است: اگر مبدأ شما برای 60 ثانیه هیچ داده‌ای نفرستد، درخواست با خطای 504 پایان می‌یابد و یک اتصال WebSocket بی‌کار بسته می‌شود. می‌توانید آن را به‌ازای هر قانون بین 1 تا 3,600 ثانیه تنظیم کنید. تا وقتی داده جریان دارد، محدودیتی برای طول کلی یک اتصال وجود ندارد.
  • در دامنه برنامه‌های Managed Container شما، WebSocket به‌طور پیش‌فرض فعال است و مهلت آن 300 ثانیه است مگر اینکه قانون مقدار دیگری تعیین کند.
  • با فعال بودن WAF، متدهای GET، HEAD، POST و OPTIONS به‌طور پیش‌فرض مجازند. چالش جاوااسکریپت فقط روی درخواست‌های صفحه از مرورگرها اعمال می‌شود و روی درخواست‌های API اثر نمی‌گذارد.

پرسش‌های متداول

چطور سرآیند محرمانه را در Apache یا nginx بررسی کنم؟

در Apache، خط‌های RewriteEngine On، RewriteCond %{HTTP:X-CDN-Auth} !=<مقدار> و RewriteRule ^ - [F] را در همان ابتدای .htaccess اضافه کنید. در nginx، if ($http_x_cdn_auth != "<مقدار>") { return 403; } را به بلاک server اضافه کنید. این بررسی را آخر از همه فعال کنید: ابتدا باید سرآیند در همه قوانین فعال باشد و دامنه شما به CDN اشاره کند.

آیا WebSocket پشتیبانی می‌شود؟

بله. برای مسیری که از WebSocket استفاده می‌کند یک قانون بسازید و اجازهٔ اتصال‌های WebSocket را فعال کنید. اتصال به مبدأ شما می‌رسد و تا زمانی که داده جریان دارد باز می‌ماند؛ در آن مسیر کش استفاده نمی‌شود.

یک درخواست چقدر می‌تواند باز بماند؟

تا وقتی داده جریان دارد، محدودیتی برای زمان کلی وجود ندارد. محدودیت مربوط به مدتی است که لبه بدون جریان داده منتظر می‌ماند: به‌طور پیش‌فرض 60 ثانیه. می‌توانید آن را در فیلد مهلت پاسخ سرور مبدأ (ثانیه) قانون تا 3,600 ثانیه بالا ببرید.

IP واقعی بازدیدکننده را از کجا بخوانم؟

از سرآیند X-CDN-Client-IP. سرور لبه این سرآیند را خودش در هر درخواست می‌نویسد و سرآیندی با همین نام که بازدیدکننده بفرستد استفاده نمی‌شود. اگر از X-Forwarded-For استفاده می‌کنید، راست‌ترین مقدار را بگیرید.

صفحات مرتبط

مدیریت رکوردهای DNS

افزودن، به‌روزرسانی، حذف، وارد کردن، خارج کردن و انتقال رکوردهای واجد شرایط به DNS ابری.

HTTP/3 و IPv6 در edge

از سپتامبر 2026، edge در CDN.com.tr هر hostname را علاوه بر HTTP/2 و IPv4 با HTTP/3 (QUIC) و IPv6 هم سرو می‌کند. مرورگرها خودشان سوئیچ می‌کنند؛ تنظیمی در سطح حساب وجود ندارد و origin شما می‌تواند فقط IPv4 بماند.