Skip to content

آدرس‌ها ​

تنظیمات ← آدرس‌ها تعیین می‌کند پنل از کجا در دسترس است و آنجا چه چیزی سرو می‌کند: پنل ادمین، اشتراک‌ها، API، یک وب‌سایت، یک برنامه‌ی دیگر، یا یک پاسخ ثابت. فقط مدیر اصلی این صفحه را باز می‌کند. تغییر بی‌درنگ و بدون ری‌استارت اعمال می‌شود، و اگر ظرف دو دقیقه تأیید نشود خودش برمی‌گردد.

صفحه‌ی آدرس‌ها: زبانه‌هایی برای شنونده‌ها، مسیرها، پاسخ‌های جایگزین، برندینگ‌ها، آزمودن یک درخواست و تاریخچه‌ی تغییرها، بالای فهرست شنونده‌هاصفحه‌ی آدرس‌ها: زبانه‌هایی برای شنونده‌ها، مسیرها، پاسخ‌های جایگزین، برندینگ‌ها، آزمودن یک درخواست و تاریخچه‌ی تغییرها، بالای فهرست شنونده‌ها

اولین آدرس ​

شنونده‌ی اصلی آدرسی است که پنل روی آن نصب شده، و همیشه می‌ماند:

  • می‌شود ویرایشش کرد، از جمله پورت، آدرس و TLS آن، اما نمی‌شود حذفش کرد، خاموشش کرد یا شنونده‌ی دیگری را جایش گذاشت.
  • همیشه یک مسیر پنل دارد و اشتراک‌ها را سرو می‌کند، روی یک مسیر اشتراک‌ها یا با روشن بودن اشتراک‌ها روی مسیر پنل.
  • این دو مسیر با برچسب اصلی مشخص می‌شوند. میزبان‌ها، پیشوند مسیر و گزینه‌هایشان ویرایش‌شدنی است، اما نمی‌شود حذفشان کرد، سرویسشان را عوض کرد، به حسابی بستشان یا از شنونده‌ی اصلی برداشتشان.
  • ویزارد راه‌اندازی آن را می‌نویسد. تا وقتی پنل همین یک آدرس را دارد، nx-panel config get و config set آن را روی سرور می‌خوانند و می‌نویسند، و nx-panel ingress reset آن را از نو می‌سازد (خط فرمان).
  • در Docker پورتش را فایل compose تعیین می‌کند.

تغییری که در این صفحه بدهید بی‌درنگ اعمال می‌شود. تغییری که از خط فرمان سرور بدهید در شروع بعدی پنل اعمال می‌شود.

یک درخواست چطور پاسخ می‌گیرد ​

  1. یک شنونده اتصال را روی پورتش، با TLS خودش، می‌پذیرد.
  2. مسیرهای روی آن شنونده به ترتیب امتحان می‌شوند. اولین مسیری که هاست‌ها و پیشوند مسیرش بخواند و سرویسش مسیر را بگیرد، پاسخ می‌دهد.
  3. درخواستی که هیچ مسیری نگیرد یک پاسخ جایگزین می‌گیرد: پاسخ جایگزین مسیر، وگرنه پاسخ جایگزین شنونده، وگرنه یک «not found» ساده.

پاسخ جایگزین فقط به چیزی پاسخ می‌دهد که پنل رد می‌کند. خطاهای خود پنل، مثل گذرواژه‌ی اشتباه یا «not found» در API، هرگز جایگزین نمی‌شوند.

شنونده‌ها ​

شنونده یک پورت است که پنل bind می‌کند. شنونده‌ی اصلی همان است که پنل همیشه روی آن شروع می‌شود: همیشه روشن است، و در Docker آدرسش را فایل compose تعیین می‌کند.

فیلدچه می‌کند
آدرس گوش دادنیک آدرس IP این سرور؛ خالی یعنی گوش دادن روی همه‌ی آدرس‌ها، IPv4 و IPv6.
پورتپورت. روی شنونده‌ی اصلی، خالی پورتی را نگه می‌دارد که پنل با آن شروع شده.
TLSHTTP ساده، گواهی از انبار گواهی‌ها (از گواهی‌ها) یا فایل‌های گواهی روی دیسک.
گواهی‌های بیشترگواهی‌های دیگری از انبار. کلاینتی که نامی را بخواهد که یکی از آن‌ها دارد همان را می‌گیرد؛ بقیه گواهی خود شنونده را.
رد نام‌های ناشناختهدست‌دادن TLS که نامی بخواهد که هیچ گواهی اینجا ندارد رد می‌شود. باز کردن پنل با IP آن وقتی گواهی آن IP را داشته باشد همچنان کار می‌کند.
هاست باید با دست‌دادن یکی باشددرخواستی که نام میزبانش با نامی که دست‌دادن TLS آن خواسته فرق کند، پاسخ جایگزین را می‌گیرد.
پراکسی‌های مورد اعتمادآدرس‌ها و CIDRهایی که این شنونده X-Forwarded-For آن‌ها را باور می‌کند. فهرست شنونده‌ی اصلی همان است که در امنیت آمده.
پاسخ جایگزینآنچه به درخواستی پاسخ می‌دهد که هیچ مسیری روی این شنونده نمی‌گیرد.
عبور مستقیمنام‌های میزبانی که اتصال‌های TLS آن‌ها دست‌نخورده به یک host:port دیگر داده می‌شود (پایین‌تر).

شنونده‌ای که نتواند پورتش را bind کند، یا گواهی‌اش بارگذاری نشود، سرو نمی‌کند را با دلیلش نشان می‌دهد، و بقیه به سرو کردن ادامه می‌دهند. شنونده‌ی TLS که گواهی‌اش بارگذاری نشود هرگز به‌جای آن با HTTP ساده سرو نمی‌شود. شنونده‌ی اصلی استثناست، تا همچنان به پنل برسید: به HTTP ساده برمی‌گردد و همین را می‌گوید.

پنل چالش‌های ACME از نوع HTTP-01 و TLS-ALPN-01 را روی شنونده‌های خودش پاسخ می‌دهد. پنلی که روی پورت‌های ۸۰ و ۴۴۳ است همچنان می‌تواند با این چالش‌ها گواهی بگیرد؛ ببینید گواهی‌ها.

عبور مستقیم ​

یک ردیف عبور مستقیم، اتصال TLS برای یک نام میزبان را پیش از اینکه پنل چیزی از آن بخواند به برنامه‌ی دیگری می‌فرستد. آن برنامه TLS را با گواهی خودش باز می‌کند. از آن برای شریک شدن پورت ۴۴۳ با چیزی استفاده کنید که باید دست‌دادن خودش را ببیند، مثل اینباندی روی نودی که روی همان سرور اجرا می‌شود.

آن برنامه آدرس پنل را به‌عنوان آدرس کلاینت می‌بیند. PROXY protocol فرستاده نمی‌شود، پس محدودیت آدرس به ازای هر کلاینت در آن برنامه از این راه کار نمی‌کند.

مسیرها ​

هر مسیر یک نام دارد، شنونده‌هایی که روی آن‌هاست، و سه چیز که تعیین می‌کنند با کدام درخواست‌ها مطابقت دارد:

  • هاست‌ها: نام یا آدرس، بدون پورت. *.example.com یک برچسب زیر خودش را می‌گیرد. خالی یعنی همه‌ی هاست‌ها.
  • به‌جز هاست‌ها: نام‌هایی که هرگز به آن‌ها پاسخ نمی‌دهد، برای مسیری روی همه‌ی هاست‌ها.
  • پیشوند مسیر: خالی، یا /name. پیش از اینکه سرویس مسیر را ببیند، پیشوند حذف می‌شود.

مسیرها از بالا امتحان می‌شوند؛ بالا بردن و پایین بردن ترتیب را عوض می‌کنند.

یک مسیر چه چیزی سرو می‌کند ​

سرویسچه چیزی را می‌گیردبرای چیست
پنلهمه چیزپنل ادمین و API خودش، به‌علاوه‌ی بخش‌هایی که روشن شده‌اند: اشتراک‌ها، /api/v1، /metrics، نصب‌کنندهٔ نود
اشتراک‌ها/sub/…لینک‌ها و صفحه‌های اشتراک کاربران
API/api/v1/…API فقط برای توکن‌های API
متریک‌ها/metricsPrometheus؛ ببینید پایش و معیارها
نصب‌کنندهٔ نود/install…اسکریپت نصب نود و CA پنل
سایت ایستاهمه چیزیک پوشه از فایل‌ها
ریدایرکتهمه چیزهر درخواست را به آدرس دیگری می‌فرستد
پاسخ ثابتهمه چیزهمان وضعیت، هدرها و بدنه برای هر درخواست
برنامهٔ دیگرهمه چیزreverse proxy به یک افزونه یا به نرم‌افزار خودتان

یک مسیر اشتراک‌ها فقط /sub را می‌گیرد، پس مسیر بعدی همچنان بقیه‌ی درخواست‌ها روی همان هاست را می‌گیرد.

مسیرهای پنل ​

چه کسانی وارد شوند ورود روی این مسیر را به مدیران اصلی، اپراتورها یا نماینده‌ها محدود می‌کند. خالی همه‌ی حساب‌ها را راه می‌دهد، و مالک پنل همیشه وارد می‌شود.

مسیرهای API ​

مسیر API فقط توکن‌های API را می‌پذیرد. نشست مرورگر آنجا نادیده گرفته می‌شود، صفحه‌های ورود و راه‌اندازی آنجا نیستند، و نشست ورودی که به‌جای توکن به کار رود رد می‌شود. توکن‌ها و افزونه‌ها آن را به توکن‌هایی که انتخاب می‌کنید محدود می‌کنند؛ اگر هیچ‌کدام انتخاب نشود، همه‌ی توکن‌ها وارد می‌شوند. توکن یا افزونه‌ای که اینجا انتخاب شده، و حسابی که توکن به آن تعلق دارد، تا وقتی از مسیر برداشته نشود حذف نمی‌شود.

برای دور نگه داشتن /api/v1 از آدرس عمومی پنل، /api/v1 را روی مسیر پنل خاموش کنید و به یک مسیر API شنونده‌ی خودش را بدهید، مثلاً شنونده‌ای روی 127.0.0.1 یا یک آدرس خصوصی.

برنامه‌ای دیگر ​

پراکسی به یا یک URL است یا یک افزونه. مقصدی که افزونه باشد از آدرس خود افزونه و اعتمادی که پنل برایش نگه می‌دارد استفاده می‌کند، و مسیرِ افزونه‌ی تعلیق‌شده پاسخ جایگزینش را می‌دهد.

  • فرستادن هاست خود درخواست: خاموش، نام میزبان خود مقصد را می‌فرستد.
  • حذف پیشوند: به‌جای کل مسیر، مسیرِ زیر پیشوند را می‌فرستد.
  • بررسی مقصد: با مراجع صدور سیستم، با یک گواهی pin‌شده، یا بدون بررسی.

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

بقیه‌ی فیلدهای مسیر ​

فیلدچه می‌کند
بسته به یک حسابمسیر را به یک حساب ادمین می‌بندد (پایین‌تر).
فقط مشتریان خودشروی مسیر اشتراکی که به یک نماینده بسته است: هر اشتراک دیگری پاسخ جایگزین را می‌گیرد.
آدرس‌های مجازفقط به این آدرس‌ها یا CIDRها پاسخ داده می‌شود؛ بقیه پاسخ جایگزین را می‌گیرند.
پاسخ جایگزینآنچه به درخواستی پاسخ می‌دهد که این مسیر با آن مطابقت داشت اما آن را نگرفت. خالی یعنی پاسخ جایگزین شنونده.
برندینگظاهر صفحه‌های این مسیر (پایین‌تر).
لینک‌ها اینجا ساخته شوندلینک‌های این سرویس، مثل لینک‌های اشتراک، روی این مسیر ساخته می‌شوند.
آدرس عمومیمبدئی که لینک‌ها روی آن ساخته می‌شوند، وقتی مردم از راه یک CDN یا پراکسی جلوی پنل به آن می‌رسند.
هدرهاهدرهای پاسخ برای این مسیر. هدری که خود سرویس بگذارد برنده است.
max-age برای HSTS (ثانیه)فقط روی TLS فرستاده می‌شود؛ 0 یعنی خاموش.

حساب‌هایی که به هاست‌ها بسته‌اند ​

بسته به یک حساب روی یک مسیر پنل، هاست‌های آن را مال آن حساب می‌کند:

  • روی آن مسیر فقط حساب بسته‌شده وارد می‌شود، یا توکن‌های API خودش را به کار می‌برد.
  • حسابی که به یک مسیر بسته است جای دیگری وارد نمی‌شود، و توکن‌هایش جای دیگری کار نمی‌کنند. مالک پنل استثناست: همیشه می‌تواند روی آدرس‌های دیگر پنل وارد شود.

ورودِ ردشده درست مثل گذرواژه‌ی اشتباه دیده می‌شود، و برای مسدودیت شمرده نمی‌شود.

یک مسیر اشتراک‌ها که به یک نماینده بسته است، آدرس اشتراک همان نماینده است. با روشن بودن لینک‌ها اینجا ساخته شوند، لینک‌های مشتری‌هایش آنجا ساخته می‌شوند. فقط مشتریان خودش برای مسیر تازه به‌طور پیش‌فرض روشن است، تا آن دامنه نشان ندهد که پنلش با مشتری‌های نماینده‌ی دیگری مشترک است.

پاسخ‌های جایگزین ​

پاسخ جایگزین یک پاسخ قابل استفاده‌ی دوباره است: سایت ایستا، ریدایرکت یا پاسخ ثابت. فهرست نشان می‌دهد کدام شنونده‌ها و مسیرها از هر کدام استفاده می‌کنند.

سایت ایستا یک پوشه‌ی مطلق روی سرور پنل را مثل یک وب‌سایت معمولی سرو می‌کند: بدون فهرست پوشه‌ها، بدون فایل‌های نقطه‌دار، و با 404.html خودش برای مسیرهایی که فایلی ندارند. در پنلی که ارتقا یافته، پوشهٔ استتار قدیمی اینجا یک پاسخ جایگزین از نوع سایت ایستاست.

برندینگ‌ها ​

برندینگ یک ظاهر است، در دو بخش:

  • پنل ادمین: نام محصول، لوگو، آیکون سایت، رنگ، تراکم و پیام صفحهٔ ورود. صفحه‌ی ورود از همان لحظه‌ی اول با آن کشیده می‌شود.
  • صفحهٔ اشتراک: تم، عنوان، لینک پشتیبانی، لینک صفحه در کلاینت و اعلان.

لوگو و آیکون سایت روی هم حداکثر ۲۵۶ کیلوبایت هستند و در پایگاه داده نگه داشته می‌شوند، پس در هر پشتیبان هستند.

یک مسیر زیر برندینگ یکی را انتخاب می‌کند، و مدیر اصلی روی حساب یک نماینده یکی به آن می‌دهد (نماینده‌ها). پنل ادمین برندینگ مسیر را می‌گیرد، وگرنه برندینگ حسابی که مسیر به آن بسته است. اشتراک اول برندینگ صاحبش، بعد برندینگ مسیرش، بعد تنظیمات اشتراک را می‌گیرد. فیلد خالی به گزینه‌ی بعدی می‌رسد.

ذخیره و تأیید ​

هر قدر می‌خواهید ویرایش کنید، بعد ذخیره و اعمال را بزنید:

  1. پنل تغییر را بررسی می‌کند. تغییری که آدرسی را که رویش هستید بی‌پنل بگذارد رد می‌شود، و همین‌طور تغییری که شنونده‌ای را روی پورتی بگذارد که برنامه‌ی دیگری روی سرور از آن استفاده می‌کند.
  2. تغییر را بی‌درنگ اعمال می‌کند. اتصال‌های باز برقرار می‌مانند؛ یک شنونده فقط وقتی دوباره راه‌اندازی می‌شود که آدرسش عوض شود یا TLS آن روشن یا خاموش شود.
  3. صفحه تغییر را از همان آدرسی که رویش است تأیید می‌کند. اگر آن آدرس دیگر به پنل نرسد، مثلاً پس از عوض کردن پورتش، صفحه آدرس‌های تازه را فهرست می‌کند. یکی را در مهلتی که نشان داده می‌شود باز کنید تا آنجا تأیید شود.
  4. تغییری که ظرف دو دقیقه کسی تأییدش نکند خودش برمی‌گردد. پنلی که در حال انتظار متوقف شود، هنگام شروع آن را برمی‌گرداند.

برای بردن پنل به جای دیگر، اول آدرس تازه را اضافه کنید، ذخیره کنید، آن را باز کنید، و آدرس قدیمی را از همانجا حذف کنید.

تاریخچه هر تغییر را فهرست می‌کند: از این صفحه، از خط فرمان، یک ارتقا، یک بازگردانی پشتیبان یا ingress reset. بازگرداندن یک نسخه‌ی قدیمی‌تر را اعمال می‌کند، و مثل هر تغییر دیگری باید تأیید شود.

آزمودن یک درخواست ​

آزمودن یک درخواست نشان می‌دهد یک درخواست چه چیزی می‌گیرد، بدون اینکه درخواستی فرستاده شود. شنونده را انتخاب کنید و هاست، مسیر، نام TLS و آدرس کلاینت را بدهید. پاسخ نام مسیری را که آن را می‌گیرد و مسیری را که سرویسش می‌بیند می‌گوید، یا پاسخ جایگزینی که پاسخ می‌دهد، و هر مسیری را که از آن گذشته با دلیلش فهرست می‌کند. روی تغییرات ذخیره‌نشده ویرایش‌هایتان را پیش از ذخیره می‌آزماید.

هشدارها ​

صفحه درباره‌ی چیزهایی هشدار می‌دهد که ذخیره و سرو می‌شوند اما احتمالاً آن کاری را نمی‌کنند که منظورتان بود:

  • مسیری که هرگز پاسخ نمی‌دهد، چون مسیری زودتر درخواست‌هایش را می‌گیرد؛
  • مسیری که اصلاً به هیچ چیز پاسخ نمی‌دهد؛
  • نام میزبانی روی یک شنونده‌ی TLS که هیچ‌کدام از گواهی‌هایش آن را ندارد؛
  • شنونده‌ای غیر از شنونده‌ی اصلی داخل کانتینر، که فقط وقتی در دسترس است که کانتینر پورتش را منتشر کند؛
  • نصب‌کننده‌ی نود که فقط روی مسیر خودش سرو می‌شود، در حالی که دستور نصب در نودها از آدرسی استفاده می‌کند که پنل را با آن باز کرده‌اید.

مثال‌ها ​

پنل روی ۴۴۳ با یک دامنه ​

  1. در گواهی‌ها برای panel.example.com و sub.example.com گواهی صادر کنید.
  2. یک شنونده روی پورت ۴۴۳ با گواهی از انبار گواهی‌ها، همان گواهی، و رد نام‌های ناشناخته روشن اضافه کنید.
  3. روی آن یک مسیر پنل با هاست panel.example.com، و یک مسیر اشتراک‌ها با هاست sub.example.com و لینک‌ها اینجا ساخته شوند اضافه کنید.
  4. ذخیره کنید، https://panel.example.com را باز کنید، و از آنجا آدرس قدیمی را اگر دیگر نمی‌خواهید حذف کنید.

نماینده‌ای با آدرس‌های خودش ​

یک مسیر پنل روی panel.reseller.example.com و یک مسیر اشتراک‌ها روی sub.reseller.example.com اضافه کنید، هر دو بسته به یک حساب آن نماینده، با برندینگ خودش. نماینده فقط آنجا وارد می‌شود، و لینک‌ها و صفحه‌های مشتری‌هایش نام خودش را دارند.

یک افزونه پشت ۴۴۳ ​

یک مسیر برنامهٔ دیگر روی shop.example.com اضافه کنید و پراکسی به را روی آن افزونه بگذارید. اگر یک مسیر پنل روی همان شنونده همه‌ی هاست‌ها را می‌گیرد، shop.example.com را به به‌جز هاست‌ها آن اضافه کنید.

پشت CDN ​

یک نام میزبان می‌تواند پشت Cloudflare یا CDN دیگری برود در حالی که بقیه مستقیم می‌مانند، حتی روی همان شنونده. CDN مثل هر کلاینت دیگری به پنل وصل می‌شود، پس به یک شنونده، یک گواهی، و اعتماد پنل به آدرسی که می‌فرستد نیاز دارد.

Cloudflare ​

  1. پورتی که Cloudflare می‌فرستد. HTTPS را روی 443، 2053، 2083، 2087، 2096 و 8443 می‌فرستد، و HTTP را روی 80، 8080، 8880، 2052، 2082، 2086 و 2095. روی یکی از آن‌ها یک شنونده اضافه کنید، یا با یک origin rule کاری کنید که Cloudflare ترافیک را به پورت شنونده بفرستد.
  2. TLS میان Cloudflare و پنل. حالت Full در Cloudflare با گواهی خودامضای خود پنل کار می‌کند. برای Full (strict)، یک گواهی origin در Cloudflare بسازید، آن را در گواهی‌ها بارگذاری کنید و برای شنونده انتخابش کنید. از Flexible پرهیز کنید: ترافیک از Cloudflare تا پنل HTTP ساده می‌شود.
  3. آدرس بازدیدکننده. بازه‌های IPv4 و IPv6 که Cloudflare منتشر می‌کند را در پراکسی‌های مورد اعتماد شنونده بگذارید. آن وقت پنل آدرس بازدیدکننده را برای محافظت از ورود، بن‌ها و آدرس‌های مجاز از X-Forwarded-For می‌گیرد. بازدیدکنندگانی که مستقیم به همان شنونده می‌رسند اثری نمی‌بینند، چون آدرسشان جزو آدرس‌های Cloudflare نیست.
  4. رکورد DNS. پراکسی را فقط برای همان نام میزبان روشن کنید.
  5. لینک‌ها. وقتی پورت Cloudflare با پورت شنونده فرق دارد، آدرس عمومی مسیر را تنظیم کنید، مثل https://sub.example.com، تا لینک‌ها روی آن و بدون پورت ساخته شوند.
  6. تنظیمات خود Cloudflare برای این هاست.
    • "Cache Everything" یا هر قاعده‌ای که همه‌ی مسیرها را cache کند روشن نکنید: اشتراک‌ها و API پنل باید هر بار به خود پنل برسند.
    • چالش‌های ضدبات را روی هاست اشتراک خاموش نگه دارید: اپ نمی‌تواند به آن‌ها پاسخ دهد و دریافتش شکست می‌خورد.
    • WebSocketها باید روشن بمانند، همان‌طور که پیش‌فرض هستند؛ نماهای زنده‌ی پنل از آن‌ها استفاده می‌کنند.

در پلن رایگان Cloudflare، بارگذاری بزرگ‌تر از ۱۰۰ مگابایت رد می‌شود و درخواستی که بیش از ۱۰۰ ثانیه طول بکشد قطع می‌شود. پشتیبان بزرگ را از آدرس مستقیم پنل بازگردانی کنید.

CDNهای دیگر ​

هر CDNی کار می‌کند که:

  • HTTP یا HTTPS را به پورتی بفرستد که پنل روی آن شنونده دارد؛
  • نام میزبان اصلی را بفرستد، و روی TLS همان نام را در دست‌دادن؛
  • آدرس بازدیدکننده را در X-Forwarded-For بنویسد؛
  • آدرس‌هایی را که از آن‌ها وصل می‌شود منتشر کند، برای پراکسی‌های مورد اعتماد؛
  • بشود به آن گفت اشتراک‌ها و API را cache نکند.

دسترسی قطع‌شده ​

اگر تغییری پنل را از دسترس خارج کرد و با این حال تأیید شد، آدرس‌ها را از خط فرمان سرور با nx-panel ingress reset برگردانید، که یک شنونده‌ی HTTP ساده با پنل روی همه‌ی هاست‌ها باقی می‌گذارد. ببینید خط فرمان.

متن و تصویرها با مجوز CC BY 4.0.