با قابلیت مسیرهای متصل میتوانید یک زیرمسیر از دامنه یک سایت را به سایت دیگری روی همان سرور متصل کنید؛ بدون اینکه نیاز باشد کانفیگ Nginx را بهصورت دستی بنویسید.
برای مثال، فرض کنید سایت اصلی شما روی example.com قرار دارد و یک سایت وردپرس جداگانه نیز روی همان سرور دارید. با مسیرهای متصل میتوانید سایت وردپرس را روی مسیر زیر در دسترس قرار دهید:
https://example.com/blog
در این حالت، محتوای سایت وردپرس بهصورت مستقیم از سایت مقصد سرو میشود و فایلها یا اپلیکیشن آن کپی نمیشوند.
مسیر متصل چه تفاوتی با Redirect دارد؟ #
این دو قابلیت کاربرد متفاوتی دارند:
مسیر متصل | Redirect | |
کاربرد | نمایش محتوای سایت دیگر زیر یک مسیر از سایت اصلی | انتقال کاربر به یک آدرس دیگر |
آدرس مرورگر | معمولاً همان آدرس اصلی باقی میماند | به آدرس مقصد تغییر میکند |
مثال | example.com/blog → نمایش سایت وردپرس | example.com/old → example.com/new |
محتوا | از سایت مقصد بهصورت مستقیم سرو میشود | L دیگری هدایت میشود |
اگر هدف شما این است که آدرس A به آدرس B هدایت شود، از قابلیت Redirect در تنظیمات Nginx استفاده کنید.
اگر میخواهید محتوای یک سایت دیگر را زیر یک مسیر از دامنه اصلی نمایش دهید، از مسیرهای متصل استفاده کنید.
از کجا مسیر متصل ایجاد کنیم؟ #
برای ایجاد یک مسیر متصل:
- وارد پنل سایت والد شوید؛ یعنی سایتی که قرار است مسیر زیر آن ایجاد شود.
- به بخش پیکربندی Nginx بروید.
- بخش مسیرهای متصل را باز کنید.
- روی اتصال مسیر جدید کلیک کنید.
- مسیر موردنظر، مانند /blog، را وارد کنید.
- سایت مقصد را انتخاب کنید.
- اتصال را ثبت کنید.
پچیم کانفیگ موردنیاز Nginx را بهصورت خودکار ایجاد و اعمال میکند.
پیشنیازها #
برای ایجاد مسیر متصل، شرایط زیر باید برقرار باشد:
- سایت مقصد باید روی همان سرور قرار داشته باشد.
- سایت مقصد باید آماده و فعال باشد.
- مسیر باید با / شروع شود؛ برای مثال
/blogیا/docs/help. - استفاده از مسیر ریشه / مجاز نیست.
- مسیر نباید قبلاً برای یک مسیر متصل دیگر استفاده شده باشد.
- مسیر نباید با یک Redirect موجود در همان سایت تداخل داشته باشد.
- نمیتوانید یک سایت را به خودش متصل کنید.
چه سایتهایی را میتوان به مسیر متصل کرد؟ #
سایتهای قابل اتصال به دو گروه اصلی تقسیم میشوند.
سایتهای مبتنی بر فایل و PHP-FPM #
این سایتها محتوای خود را از فایلهای موجود روی دیسک سرو میکنند و در صورت نیاز از PHP-FPM استفاده میکنند.
- WordPress
- PHP
- HTML استاتیک
- Laravel
- phpMyAdmin
سایتهای مبتنی بر Proxy #
این سایتها روی یک پورت محلی اجرا میشوند و Nginx درخواستها را به آن پورت ارسال میکند.
- Node.js
- Django
- Flask
- Python
- ASP.NET
- Golang
- Proxy
- Docker
برای سایتهای این گروه، سایت مقصد باید پورت معتبر داشته باشد. اگر پورتی برای سایت تنظیم نشده باشد، آن سایت بهعنوان مقصد قابل انتخاب نیست.
کاربر سیستم و ایزولهسازی #
نحوه اتصال سایت مقصد به نوع آن بستگی دارد.
سایتهای PHP، وردپرس و استاتیک #
سایت والد و سایت مقصد باید از یک کاربر سیستم یکسان استفاده کنند.
دلیل این محدودیت این است که پچیم برای این نوع اتصال به فایلهای سایت و در صورت نیاز به سوکت PHP-FPM همان کاربر دسترسی دارد.
اگر کاربر سیستم دو سایت متفاوت باشد، مسیر متصل ایجاد نمیشود.
سایتهای مبتنی بر Proxy #
برای سایتهایی مانند Node.js، Django، Docker و سایر سرویسهای Proxy، یکسان بودن کاربر سیستم الزامی نیست.
در این حالت، Nginx درخواست را به یک پورت محلی مانند زیر ارسال میکند:
127.0.0.1:3000
بنابراین اتصال به فایلها یا سوکت PHP-FPM کاربر مقصد وابسته نیست.
ساخت سایت مقصد هنگام ایجاد مسیر #
اگر هنوز سایت مقصد را ایجاد نکردهاید، میتوانید از داخل فرم اتصال مسیر جدید، سایت جدید بسازید.
در این حالت، پچیم کاربر سیستم سایت جدید را با سایت والد هماهنگ میکند تا در صورت نیاز بتوان آن را بهعنوان مقصد سایتهای PHP یا وردپرس استفاده کرد.
پس از ساخت سایت، پچیم منتظر میماند تا نصب و آمادهسازی آن کامل شود. سپس سایت بهصورت خودکار در فهرست مقصدهای قابل انتخاب قرار میگیرد.
اگر یک سایت در فهرست مقصدها نمایش داده نشود، معمولاً یکی از این موارد دلیل آن است:
- کاربر سیستم سایت با سایت والد متفاوت است.
- سایت هنوز در حال نصب یا آمادهسازی است.
- سایت مقصد از نوعی است که برای مسیر متصل پشتیبانی نمیشود.
- برای سایت Proxy، پورت معتبری تنظیم نشده است.
مثالها
۱. قرار دادن وردپرس زیر مسیر دامنه اصلی #
فرض کنید:
- سایت والد:
example.com - سایت مقصد: یک سایت WordPress روی همان سرور
- مسیر: /blog
بعد از ایجاد اتصال، آدرس زیر محتوای سایت وردپرس را نمایش میدهد:
https://example.com/blog
تنظیمات مهم وردپرس #
بعد از اتصال، بهتر است آدرس سایت وردپرس را نیز روی آدرس نهایی تنظیم کنید.
برای مثال:
- Site URL:
https://example.com/blog - Home URL:
https://example.com/blog
در غیر این صورت ممکن است لینکها، پنل مدیریت، فایلهای رسانهای یا سایر URLهای وردپرس به دامنه یا آدرس قبلی سایت مقصد اشاره کنند.
۲. قرار دادن اپلیکیشن Node.js زیر یک مسیر #
فرض کنید:
- سایت والد:
example.com - سایت مقصد: یک اپلیکیشن Node.js
- پورت اپلیکیشن:
3000 - مسیر:
/app
در این حالت درخواستهای زیر:
https://example.com/app
و
https://example.com/app/users
به اپلیکیشن Node.js روی پورت مربوطه ارسال میشوند.
پچیم پیشوند مسیر را قبل از ارسال درخواست به اپلیکیشن حذف میکند. بنابراین اپلیکیشن درخواست را مانند زمانی دریافت میکند که روی ریشه خودش اجرا شده باشد.
اگر اپلیکیشن شما برای اجرا زیر یک Base Path مشخص نیاز به تنظیمات دارد، باید Base Path را نیز در خود اپلیکیشن تنظیم کنید.
۳. قرار دادن مستندات استاتیک زیر دامنه اصلی #
فرض کنید مستندات شما یک سایت HTML استاتیک جداگانه است.
میتوانید آن را با مسیر زیر به سایت اصلی متصل کنید:
https://example.com/docs
این روش برای مواردی مانند:
- مستندات فنی
- Landing Pageهای جداگانه
- صفحات استاتیک
- سایتهای محتوایی مستقل
مناسب است.
نحوه عملکرد در Nginx
پچیم برای هر مسیر متصل، کانفیگ مربوط به آن را بهصورت خودکار در تنظیمات Nginx سایت والد ایجاد میکند.
سپس Nginx را Reload میکند تا تغییرات اعمال شوند.
سایتهای PHP، وردپرس و استاتیک #
برای این سایتها، پچیم مسیر فایلهای سایت مقصد را به مسیر متصل مرتبط میکند.
در سایتهای PHP، درخواستهای PHP نیز به PHP-FPM مربوط به سایت مقصد ارسال میشوند.
سایتهای Proxy #
برای سایتهای مبتنی بر Proxy، درخواستها با استفاده از proxy_pass به پورت محلی سایت مقصد ارسال میشوند.
برای مثال:
127.0.0.1:3000
همچنین تنظیمات موردنیاز برای هدرهای Proxy و WebSocket نیز اعمال میشود.
در صورت دسترسی به مسیر بدون / انتهایی، مانند:
example.com/app
پچیم آن را به شکل مناسب به مسیر /app/ هدایت میکند.
نیازی نیست این تنظیمات را بهصورت دستی در Nginx ایجاد یا ویرایش کنید. مدیریت مسیرهای متصل از طریق پنل پچیم انجام میشود.
ویرایش و حذف مسیر متصل
ویرایش #
میتوانید مسیر یا سایت مقصد را تغییر دهید.
پچیم کانفیگ Nginx مربوط به اتصال را بهصورت خودکار بهروزرسانی میکند.
حذف #
با حذف یک مسیر متصل، اتصال آن مسیر حذف میشود و دیگر محتوای سایت مقصد از آن مسیر نمایش داده نمیشود.
حذف مسیر متصل، سایت مقصد را حذف نمیکند.
تا زمانی که وضعیت عملیات «در حال نصب»، «در حال بهروزرسانی» یا «در حال حذف» است، صبر کنید تا عملیات روی سرور به پایان برسد.
محدودیتها و نکات مهم
- فقط سایتهای موجود روی همان سرور قابل اتصال هستند.
- اتصال سایت به سرور دیگر پشتیبانی نمیشود.
- مسیر / قابل استفاده نیست و باید حداقل یک زیرمسیر مانند /blog داشته باشید.
- نمیتوانید سایت را به خودش متصل کنید.
- یک مسیر نمیتواند همزمان برای Redirect و مسیر متصل استفاده شود.
- مسیر موردنظر نباید قبلاً برای اتصال دیگری استفاده شده باشد.
- سایتهایی مانند Redirect خالص، Meilisearch و سرویسهای مشابه، بهعنوان مقصد مسیر متصل پشتیبانی نمیشوند.
- برای سایتهای PHP پیچیده، مانند برخی پروژههای Laravel، ممکن است بسته به ساختار پروژه و نحوه مدیریت مسیرها، تنظیمات اضافی در خود برنامه لازم باشد.
- در اپلیکیشنهای Proxy، اگر برنامه لینکهای مطلق تولید کند یا فرض کند روی ریشه دامنه اجرا میشود، ممکن است لازم باشد Base Path یا آدرس عمومی برنامه را در خود اپلیکیشن تنظیم کنید.
- برای سایتهای PHP، وردپرس و استاتیک، کاربر سیستم سایت مقصد باید با سایت والد یکسان باشد.
- برای سایتهای Proxy، کاربر سیستم میتواند متفاوت باشد؛ اما تنظیم بودن پورت مقصد الزامی است.
جمعبندی
مسیر متصل به شما اجازه میدهد محتوای یک سایت دیگر را بدون کپی کردن فایلها، زیر یک مسیر از دامنه اصلی نمایش دهید.
برای مثال:
example.com/blog → سایت وردپرس جداگانه
یا:
example.com/app → اپلیکیشن Node.js
بهطور خلاصه:
- PHP / WordPress / HTML / Laravel / phpMyAdmin → استفاده از فایلهای سایت مقصد و در صورت نیاز PHP-FPM
- Node.js / Django / Flask / Python / ASP.NET / Golang / Docker / Proxy → اتصال از طریق پورت محلی
- سایتهای فایلمحور → کاربر سیستم سایت والد و مقصد باید یکسان باشد
- سایتهای Proxy → کاربر سیستم میتواند متفاوت باشد، اما پورت مقصد باید مشخص باشد
- مدیریت مسیرها → از مسیر
سایت ← پیکربندی Nginx ← مسیرهای متصل - Redirect → برای انتقال کاربر به یک URL دیگر استفاده میشود، نه نمایش محتوای سایت مقصد زیر مسیر دامنه اصلی
راهنمای گامبهگام افزودن قانون Redirect در پچیم #
۱. ورود به بخش پیکربندی Nginx #
از منوی سمت راست پنل، وارد قسمت پیکربندی Nginx شوید (آیکون مشخصشده در تصویر).
۲. انتخاب تب قوانین تغییر مسیر (Redirect) #
روی گزینهی لیست قوانین Redirect کلیک کنید.
اگر تاکنون قانونی ایجاد نکردهاید، پیامی مشابه «قانون تغییری برای نمایش وجود ندارد» مشاهده میکنید.
۳. ایجاد قانون جدید #
روی دکمهی آبیرنگ قانون تغییر مسیر جدید + کلیک کنید.
۴. وارد کردن تنظیمات Redirect #
در فرم باز شده:
از مسیر: مسیر فعلی را وارد کنید (مثلاً
/old-page)به مسیر: مسیر یا دامنه مقصد را بنویسید (مثلاً
/new-pageیاhttps://newsite.com)نوع تغییر مسیر:
301برای تغییر مسیر دائم (مناسب برای SEO)302برای تغییر مسیر موقتی
۵. ذخیره و اعمال تغییرات #
پس از پر کردن فرم، روی دکمهی ذخیره کلیک کنید.
قوانین ریدایرکت بهصورت خودکار در پیکربندی سرور شما اعمال میشوند و نیاز به ریاستارت دستی نیست.
نکات مهم #
حتماً مسیرها را به درستی وارد کنید. از
/در ابتدای مسیر فعلی استفاده کنید.اگر میخواهید همه صفحات از دامنه قدیمی به دامنه جدید هدایت شوند، از عبارتهای wildcard مانند
/old-path/*استفاده کنید.هر زمان خواستید، میتوانید قوانین را ویرایش یا حذف کنید.