سی ام اس نویسسی ام اس نویسیاد بگیر، سیستم خودتو بنویس
مجلهتماس با ما
سی ام اس نویسسی ام اس نویس

CMS نویس مرجعی برای آموزش برنامه نویسی وب و PHP، توسعه افزونه‌های اختصاصی وردپرس، طراحی ورک‌فلو و اتوماسیون با n8n و توسعه CMS های اختصاصی است. هدف ما ارائه آموزش‌های کاربردی و راهکارهای حرفه‌ای برای توسعه‌دهندگان، کسب‌وکارها و علاقه‌مندان به دنیای برنامه‌نویسی است.

پیوندهای سریع
محصولات فیزیکیمحصولات دیجیتالدوره‌های آموزشی
سی ام اس نویس
مجله سی ام اس نویستماس با ماپنل کاربری
سی ام اس نویس — تمامی حقوق برای سی ام اس نویس محفوظ است. © 1406 تماس با ما09307711941
اتصال دامنه به n8n؛ آموزش کامل تنظیم DNS و Reverse Proxy

اتصال دامنه به n8n؛ آموزش کامل تنظیم DNS و Reverse Proxy

ممدیر کل سیستم ۱۲ آبان ۱۴۰۵ ۲۳ دقیقه مطالعه ۱ بازدید
اتصال دامنه به n8n؛ آموزش کامل تنظیم DNS و Reverse Proxy

اگر n8n را روی سرور مجازی، Docker یا سرور اختصاصی نصب کرده باشید، احتمالاً در ابتدا از طریق آدرسی مانند http://SERVER_IP:5678 به آن دسترسی دارید.

این روش برای آزمایش اولیه مناسب است، اما برای استفاده دائمی و حرفه‌ای، بهتر است n8n را به یک دامنه یا زیردامنه اختصاصی متصل کنید.

برای مثال، می‌توانید پنل n8n خود را از طریق آدرس زیر در دسترس قرار دهید:


https://n8n.example.com

اتصال دامنه به n8n فقط باعث زیباتر شدن آدرس پنل نمی‌شود؛ بلکه برای راه‌اندازی HTTPS، دریافت Webhook از سرویس‌های خارجی، مدیریت احراز هویت و استفاده از برخی اتصال‌های OAuth نیز اهمیت دارد.

در این مقاله قصد داریم اتصال دامنه به n8n را به‌صورت قدم‌به‌قدم آموزش دهیم. ابتدا رکوردهای DNS را تنظیم می‌کنیم، سپس متغیرهای محیطی n8n را بررسی خواهیم کرد و در ادامه روش اتصال دامنه با Nginx و OpenLiteSpeed را توضیح می‌دهیم.

همچنین نحوه استفاده از Cloudflare، تنظیم Webhook URL و رفع خطاهای رایج را بررسی می‌کنیم.

چرا باید دامنه را به n8n متصل کنیم؟

n8n به‌صورت پیش‌فرض معمولاً روی پورت 5678 اجرا می‌شود.

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


http://203.0.113.10:5678

اما استفاده از IP و پورت برای محیط عملیاتی چند محدودیت دارد.

۱. استفاده از آدرس اختصاصی

با اتصال دامنه می‌توانید به‌جای IP از یک آدرس مشخص استفاده کنید:


https://automation.example.com

این روش مدیریت سرویس و اشتراک‌گذاری آدرس آن را آسان‌تر می‌کند.

۲. فعال‌سازی HTTPS

استفاده از HTTPS باعث رمزنگاری ارتباط بین مرورگر یا سرویس خارجی و سرور شما می‌شود.

برای پنل مدیریتی که Credentialها و اطلاعات حساس را مدیریت می‌کند، استفاده از HTTPS اهمیت زیادی دارد.

۳. دریافت Webhook

بسیاری از سرویس‌های خارجی برای ارسال رویدادها به یک آدرس HTTPS عمومی نیاز دارند.

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

۴. استفاده از OAuth

هنگام اتصال بعضی سرویس‌ها مانند Google، ممکن است لازم باشد یک Redirect URI مشخص و عمومی را در پنل توسعه‌دهندگان سرویس ثبت کنید.

وجود دامنه ثابت و HTTPS تنظیم این فرایند را ساده‌تر می‌کند.

۵. مدیریت چند سرویس روی یک سرور

ممکن است روی یک VPS چند برنامه داشته باشید:


example.com

api.example.com

n8n.example.com

panel.example.com

با استفاده از Reverse Proxy می‌توانید درخواست‌های هر دامنه را به سرویس مربوطه هدایت کنید.

پیش‌نیازهای اتصال دامنه به n8n

قبل از شروع، باید موارد زیر آماده باشند:

  • یک دامنه فعال
  • دسترسی به پنل DNS دامنه
  • سرور لینوکسی با IP عمومی
  • یک نمونه n8n در حال اجرا
  • دسترسی SSH به سرور
  • امکان استفاده از پورت‌های 80 و 443
  • یک Reverse Proxy مانند Nginx یا OpenLiteSpeed

در این آموزش فرض می‌کنیم n8n روی همان سرور و پورت 5678 اجرا شده است.

آدرس نمونه سرور:


203.0.113.10

زیردامنه نمونه:


n8n.example.com

این مقادیر آموزشی هستند و باید با اطلاعات واقعی جایگزین شوند.

Reverse Proxy چیست و چه ارتباطی با n8n دارد؟

Reverse Proxy یک واسط بین کاربران و برنامه اصلی است.

در معماری معمول، مرورگر کاربر مستقیماً به پورت 5678 متصل نمی‌شود؛ بلکه درخواست را از طریق HTTPS به وب‌سرور ارسال می‌کند.

وب‌سرور درخواست را دریافت کرده و به n8n منتقل می‌کند.

ساختار ارتباط به شکل زیر است:


User / Webhook Provider

          |

          v

   n8n.example.com

          |

          v

       HTTPS 443

          |

          v

   Nginx / OpenLiteSpeed

          |

          v

    127.0.0.1:5678

          |

          v

         n8n

استفاده از Reverse Proxy مزایای مهمی دارد:

  • مدیریت گواهی SSL
  • استفاده از چند دامنه روی یک سرور
  • محدودسازی دسترسی مستقیم به پورت برنامه
  • تنظیم هدرهای HTTP
  • مدیریت درخواست‌های Webhook
  • امکان اعمال سیاست‌های امنیتی

برای این کار می‌توانید از Nginx، OpenLiteSpeed، Caddy یا Traefik استفاده کنید.

در ادامه دو روش Nginx و OpenLiteSpeed را بررسی می‌کنیم.

مرحله اول: بررسی وضعیت n8n روی سرور

قبل از اتصال دامنه باید مطمئن شوید n8n به‌درستی اجرا می‌شود.

اگر n8n را با Docker Compose نصب کرده‌اید، وارد پوشه پروژه شوید:


cd /opt/n8n

سپس وضعیت سرویس‌ها را بررسی کنید:


sudo docker compose ps

اگر سرویس فعال باشد، باید کانتینر n8n را مشاهده کنید.

برای بررسی پاسخ‌گویی برنامه:


curl -i http://127.0.0.1:5678/healthz

اگر پاسخ موفق دریافت کردید، می‌توانید مرحله بعد را ادامه دهید.

اگر درخواست ناموفق بود، ابتدا لاگ‌های n8n را بررسی کنید:


sudo docker compose logs --tail=100 n8n

نکته: تا زمانی که خود n8n روی سرور پاسخ نمی‌دهد، تغییر تنظیمات DNS مشکل را برطرف نخواهد کرد.

مرحله دوم: تنظیم رکورد DNS دامنه

اکنون باید زیردامنه موردنظر را به IP سرور متصل کنید.

وارد پنل مدیریت DNS دامنه شوید.

این پنل ممکن است متعلق به شرکت ثبت‌کننده دامنه، ارائه‌دهنده هاست یا سرویس‌هایی مانند Cloudflare باشد.

ایجاد رکورد A

فرض کنیم IP سرور برابر است با:


203.0.113.10

و قصد دارید از زیردامنه زیر استفاده کنید:


n8n.example.com

یک رکورد DNS با مشخصات زیر ایجاد کنید:

فیلدمقدار
TypeA
Namen8n
IPv4 Address203.0.113.10
TTLAuto یا 300

پس از ذخیره رکورد، DNS باید زیردامنه را به IP سرور هدایت کند.

اتصال دامنه اصلی به n8n

اگر قصد دارید n8n روی دامنه اصلی اجرا شود، معمولاً باید رکورد A مربوط به دامنه اصلی را تنظیم کنید.

برای مثال:


example.com

در بسیاری از پنل‌های DNS از @ برای اشاره به دامنه اصلی استفاده می‌شود.

اما اگر روی دامنه اصلی وب‌سایت دیگری دارید، بهتر است برای n8n یک زیردامنه مستقل ایجاد کنید.

بررسی رکورد DNS

در سرور یا کامپیوتر خود اجرا کنید:


dig +short n8n.example.com A

اگر IP صحیح نمایش داده شود، رکورد A قابل Resolve شدن است.

برای بررسی از طریق یک DNS Resolver مشخص:


dig @1.1.1.1 n8n.example.com A +short

اگر خروجی با مقدار موردنظر متفاوت بود، تنظیمات DNS و وضعیت انتشار تغییرات را بررسی کنید.

بررسی رکورد IPv6

اگر دامنه دارای رکورد AAAA است، باید مطمئن شوید IPv6 نیز به سرور صحیح اشاره می‌کند.

برای بررسی:


dig +short n8n.example.com AAAA

وجود رکورد AAAA اشتباه می‌تواند باعث شود برخی کاربران هنگام اتصال به دامنه با مشکل مواجه شوند.

اگر از IPv6 استفاده نمی‌کنید، رکورد AAAA غیرضروری یا اشتباه را پس از بررسی حذف کنید.

مرحله سوم: تنظیم متغیرهای محیطی n8n

یکی از مهم‌ترین مراحل اتصال دامنه، تنظیم آدرس عمومی n8n است.

اگر n8n با Docker Compose اجرا می‌شود، معمولاً فایل تنظیمات در مسیر زیر قرار دارد:


/opt/n8n/.env

فایل را باز کنید:


nano /opt/n8n/.env

متغیرهای زیر را متناسب با دامنه خود تنظیم کنید:


N8N_HOST=n8n.example.com

N8N_PROTOCOL=https

N8N_EDITOR_BASE_URL=https://n8n.example.com/

WEBHOOK_URL=https://n8n.example.com/

N8N_PROXY_HOPS=1

کاربرد متغیر N8N_HOST

این متغیر نام میزبان عمومی n8n را مشخص می‌کند.


N8N_HOST=n8n.example.com

کاربرد N8N_PROTOCOL

پروتکل آدرس عمومی را تعیین می‌کند.


N8N_PROTOCOL=https

اگر Reverse Proxy ارتباط HTTPS را مدیریت می‌کند، آدرس عمومی n8n می‌تواند HTTPS باشد، حتی اگر ارتباط داخلی Proxy با کانتینر از طریق HTTP انجام شود.

کاربرد N8N_EDITOR_BASE_URL

این متغیر آدرس عمومی محیط ویرایشگر n8n را مشخص می‌کند.


N8N_EDITOR_BASE_URL=https://n8n.example.com/

کاربرد WEBHOOK_URL

این متغیر یکی از مهم‌ترین تنظیمات هنگام استفاده از Webhook است.


WEBHOOK_URL=https://n8n.example.com/

با این تنظیم، n8n می‌تواند آدرس‌های Webhook را براساس دامنه عمومی ایجاد کند.

کاربرد N8N_PROXY_HOPS

این متغیر تعداد لایه‌های Reverse Proxy قابل اعتماد را در مسیر درخواست مشخص می‌کند.


N8N_PROXY_HOPS=1

در معماری‌ای که فقط یک Reverse Proxy مانند Nginx مستقیماً جلوی n8n قرار دارد، مقدار 1 معمولاً مناسب است.

اگر از چند لایه Proxy استفاده می‌کنید، باید مقدار آن را مطابق معماری واقعی و مرزهای اعتماد شبکه تنظیم کنید.

مرحله چهارم: اعمال متغیرهای محیطی در Docker Compose

یک نکته مهم وجود دارد: قرار دادن متغیرها در فایل .env به‌تنهایی به معنی ارسال خودکار تمام آن‌ها به کانتینر نیست.

اگر فایل Compose از متغیرها استفاده نمی‌کند، باید آن‌ها را به بخش environment سرویس n8n اضافه کنید.

برای مثال:


services:

  n8n:

    image: docker.n8n.io/n8nio/n8n:latest



    ports:

      - "127.0.0.1:5678:5678"



    environment:

      N8N_HOST: ${N8N_HOST}

      N8N_PROTOCOL: ${N8N_PROTOCOL}

      N8N_EDITOR_BASE_URL: ${N8N_EDITOR_BASE_URL}

      WEBHOOK_URL: ${WEBHOOK_URL}

      N8N_PROXY_HOPS: ${N8N_PROXY_HOPS}

این بخش صرفاً نمونه‌ای از تنظیمات مربوط به دامنه است؛ اگر فایل Compose شما شامل PostgreSQL، Volume و سایر متغیرهاست، آن تنظیمات را حفظ کنید.

پس از ذخیره فایل، ساختار Compose را بررسی کنید:


sudo docker compose config --quiet

سپس سرویس n8n را با تنظیمات جدید ایجاد کنید:


sudo docker compose up -d --no-deps n8n

برای اطمینان از اعمال تنظیمات:


sudo docker compose exec n8n printenv WEBHOOK_URL

اگر آدرس دامنه صحیح نمایش داده شد، متغیر به کانتینر منتقل شده است.

مرحله پنجم: اتصال دامنه به n8n با Nginx

در این روش از Nginx به‌عنوان Reverse Proxy استفاده می‌کنیم.

این روش برای سرورهایی مناسب است که Nginx روی آن‌ها نصب شده یا قصد دارید آن را به‌عنوان وب‌سرور اصلی استفاده کنید.

توجه: اگر OpenLiteSpeed یا وب‌سرور دیگری از قبل روی پورت‌های 80 و 443 اجرا می‌شود، نباید Nginx را بدون تغییر معماری روی همان پورت‌ها اجرا کنید.

نصب Nginx

در Ubuntu اجرا کنید:


sudo apt update

sudo apt install nginx -y

وضعیت سرویس را بررسی کنید:


sudo systemctl status nginx

ایجاد Virtual Host

فایل تنظیمات دامنه را ایجاد کنید:


sudo nano /etc/nginx/sites-available/n8n

محتوای زیر را وارد کنید:


map $http_upgrade $connection_upgrade {

    default upgrade;

    ''      close;

}



server {

    listen 80;

    server_name n8n.example.com;



    location / {

        proxy_pass http://127.0.0.1:5678;

        proxy_http_version 1.1;



        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;



        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection $connection_upgrade;



        proxy_read_timeout 300s;

        proxy_send_timeout 300s;

    }

}

دستور map باید در محدوده http پیکربندی Nginx قرار بگیرد. در نصب معمول Ubuntu، فایل‌های sites-enabled داخل همین محدوده بارگذاری می‌شوند.

اگر ساختار Nginx شما متفاوت است، محل قرارگیری این دستور را بررسی کنید.

توضیح تنظیمات

server_name دامنه موردنظر را مشخص می‌کند.

proxy_pass درخواست‌ها را به n8n منتقل می‌کند.

X-Forwarded-Proto پروتکل درخواست اصلی را به برنامه منتقل می‌کند.

X-Forwarded-For اطلاعات مسیر IP درخواست را منتقل می‌کند.

هدرهای Upgrade و Connection برای پشتیبانی از ارتباط‌های Upgrade مانند WebSocket کاربرد دارند.

فعال‌سازی Virtual Host

فایل را فعال کنید:


sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/n8n

اگر لینک از قبل وجود دارد، از ایجاد نسخه تکراری خودداری کنید.

سپس صحت تنظیمات را بررسی کنید:


sudo nginx -t

اگر خطایی وجود نداشت:


sudo systemctl reload nginx

اکنون Nginx باید درخواست‌های HTTP دامنه را به n8n منتقل کند.

مرحله ششم: فعال‌سازی HTTPS با Let's Encrypt

پس از اتصال دامنه به Nginx باید HTTPS را فعال کنید.

برای این کار از Certbot استفاده می‌کنیم.

ابتدا نصب کنید:


sudo apt install certbot python3-certbot-nginx -y

سپس:


sudo certbot --nginx -d n8n.example.com

برای صدور موفق گواهی باید:

  • دامنه به IP صحیح اشاره کند.
  • پورت 80 از اینترنت قابل دسترسی باشد.
  • Nginx برای دامنه به‌درستی تنظیم شده باشد.
  • اعتبارسنجی Let's Encrypt موفق شود.

پس از صدور گواهی، Certbot می‌تواند تنظیمات HTTPS را به Virtual Host اضافه کند.

اکنون آدرس زیر را باز کنید:


https://n8n.example.com

بررسی تمدید خودکار SSL

برای آزمایش فرایند تمدید:


sudo certbot renew --dry-run

اگر آزمایش موفق باشد، تنظیمات تمدید در شرایط فعلی درست عمل می‌کنند.

مرحله هفتم: اتصال دامنه به n8n با OpenLiteSpeed

اگر روی سرور شما OpenLiteSpeed نصب است، نیازی نیست حتماً Nginx نصب کنید.

OpenLiteSpeed نیز می‌تواند به‌عنوان Reverse Proxy عمل کند.

در این روش فرض می‌کنیم:

  • OpenLiteSpeed روی سرور فعال است.
  • n8n روی 127.0.0.1:5678 اجرا می‌شود.
  • دامنه به IP سرور اشاره می‌کند.
  • دسترسی به پنل WebAdmin وجود دارد.

ورود به پنل OpenLiteSpeed

آدرس پنل مدیریت معمولاً به شکل زیر است:


https://SERVER_IP:7080

بهتر است دسترسی به پورت مدیریتی 7080 را فقط برای IPهای مجاز یا از طریق SSH Tunnel فراهم کنید.

ایجاد Virtual Host

در پنل OpenLiteSpeed به بخش زیر بروید:


Virtual Hosts

برای زیردامنه n8n یک Virtual Host اختصاصی ایجاد کنید یا Virtual Host موجود را انتخاب کنید.

سپس مطمئن شوید دامنه در تنظیمات Listenerهای HTTP و HTTPS به Virtual Host صحیح متصل شده است.

نکته: ساخت Virtual Host به‌تنهایی کافی نیست. اگر Listener Mapping وجود نداشته باشد، درخواست دامنه ممکن است به Virtual Host دیگری منتقل شود.

ایجاد External App

در تنظیمات Virtual Host به بخش External App بروید.

یک External App جدید از نوع Web Server ایجاد کنید.

مقادیر نمونه:

تنظیممقدار
TypeWeb Server
Namen8n_backend
Address127.0.0.1:5678
Max Connections100

مقدار Max Connections باید متناسب با منابع و بار واقعی سرور انتخاب شود.

در این مثال نام External App برابر n8n_backend است.

ایجاد Proxy Context

اکنون در تنظیمات همان Virtual Host به بخش Context بروید.

یک Context جدید از نوع Proxy ایجاد کنید.

تنظیمات:

تنظیممقدار
TypeProxy
URI/
Web Servern8n_backend

با این تنظیم، درخواست‌های مسیر اصلی دامنه به Backend مربوط به n8n هدایت می‌شوند.

اگر در همان Virtual Host از قبل Context یا Rewrite Rule دیگری وجود دارد، باید تداخل احتمالی را بررسی کنید.

اعمال تغییرات

پس از ذخیره تنظیمات، از قابلیت Graceful Restart استفاده کنید.

سپس دامنه را آزمایش کنید.

اگر SSL از قبل روی Listener مربوطه تنظیم شده باشد، می‌توانید از HTTPS استفاده کنید.

در غیر این صورت باید گواهی SSL را نیز برای دامنه پیکربندی کنید.

روش جایگزین با Rewrite Rule

OpenLiteSpeed از Proxy کردن درخواست‌ها با Rewrite Rule نیز پشتیبانی می‌کند.

برای مثال، در شرایط مناسب می‌توان از یک Rule مانند زیر استفاده کرد:


RewriteEngine On

RewriteRule ^(.*)$ http://127.0.0.1:5678/$1 [P,L]

این Rule باید در محدوده درست تنظیمات Rewrite قرار گیرد و با سایر Ruleها تداخل نداشته باشد.

اگر Virtual Host از قبل برای یک سایت دیگر استفاده می‌شود، اعمال چنین Rule عمومی می‌تواند تمام درخواست‌های آن سایت را به n8n منتقل کند.

بنابراین برای n8n معمولاً بهتر است یک Virtual Host مستقل با Proxy Context اختصاصی داشته باشید.

بررسی ارتباط WebSocket در OpenLiteSpeed

بسته به نسخه n8n و تنظیمات Push Backend، محیط ویرایشگر ممکن است از WebSocket یا روش‌های ارتباطی دیگر برای دریافت رویدادهای زنده استفاده کند.

اگر صفحه n8n باز می‌شود اما وضعیت اجرای Nodeها یا اتصال زنده ویرایشگر به‌درستی کار نمی‌کند، تنظیمات Proxy مربوط به WebSocket و هدرهای Upgrade را بررسی کنید.

در این شرایط باید پشتیبانی WebSocket را متناسب با نسخه OpenLiteSpeed و ساختار Proxy فعال کنید.

مرحله هشتم: اتصال n8n به Cloudflare

اگر DNS دامنه خود را در Cloudflare مدیریت می‌کنید، می‌توانید از آن برای مدیریت رکوردها و در صورت نیاز Proxy کردن ترافیک استفاده کنید.

ایجاد رکورد DNS

در بخش DNS یک رکورد A ایجاد کنید:


Type: A

Name: n8n

Content: SERVER_IP

در Cloudflare معمولاً دو حالت برای رکورد وجود دارد:

DNS Only: درخواست کاربران مستقیماً به IP سرور هدایت می‌شود.

Proxied: درخواست‌ها ابتدا از شبکه Cloudflare عبور می‌کنند.

کدام حالت برای n8n بهتر است؟

برای عیب‌یابی اولیه، DNS Only معمولاً ساده‌تر است؛ زیرا یک لایه Proxy کمتر در مسیر وجود دارد.

پس از اطمینان از عملکرد دامنه و HTTPS می‌توانید حالت Proxied را نیز بررسی کنید.

تنظیم SSL/TLS در Cloudflare

اگر از حالت Proxied استفاده می‌کنید، بهتر است ارتباط Cloudflare تا سرور اصلی نیز با TLS معتبر محافظت شود.

حالت Full (strict) برای این سناریو مناسب است، مشروط بر اینکه گواهی معتبر و مورد قبول Cloudflare روی Origin تنظیم شده باشد.

از تنظیمات ناسازگار مانند ترکیب Redirect اجباری HTTPS روی Origin با حالت Flexible خودداری کنید؛ زیرا ممکن است باعث Redirect Loop شوند.

آیا Cloudflare روی Webhookها تأثیر دارد؟

بله، ممکن است.

اگر قوانین امنیتی، WAF، Bot Protection یا Rate Limiting فعال باشند، بعضی درخواست‌های Webhook ممکن است مسدود شوند.

برای مثال، اگر یک سرویس خارجی درخواست POST به مسیر زیر ارسال کند:


https://n8n.example.com/webhook/order-created

و Cloudflare آن را Challenge یا Block کند، درخواست ممکن است به n8n نرسد.

در این شرایط باید رویدادهای امنیتی Cloudflare را بررسی کنید و فقط برای مسیرها و فرستندگان مورد اعتماد، استثناهای محدود و امن تعریف کنید.

مرحله نهم: تست آدرس Webhook پس از اتصال دامنه

پس از اتصال دامنه، باید مطمئن شوید n8n آدرس‌های Webhook را صحیح تولید می‌کند.

ایجاد Workflow آزمایشی

در پنل n8n یک Workflow جدید ایجاد کنید.

سپس Webhook Node را اضافه کنید.

متد درخواست را روی POST قرار دهید.

برای مسیر Webhook مقدار زیر را انتخاب کنید:


test-domain

آدرس آزمایشی معمولاً به شکل زیر خواهد بود:


https://n8n.example.com/webhook-test/test-domain

اکنون در محیط ویرایشگر روی Listen for Test Event کلیک کنید.

از کامپیوتر یا یک سرور دیگر درخواست زیر را ارسال کنید:


curl -X POST \

  https://n8n.example.com/webhook-test/test-domain \

  -H "Content-Type: application/json" \

  -d '{"message":"Hello n8n"}'

اگر درخواست به Workflow برسد، اطلاعات ارسالی در خروجی Webhook Node نمایش داده می‌شود.

آزمایش Production Webhook

برای استفاده دائمی، Workflow را فعال یا منتشر کنید.

سپس از آدرس Production استفاده کنید:


https://n8n.example.com/webhook/test-domain

آدرس Production باید براساس تنظیمات واقعی Webhook Node بررسی شود.

برای سرویس‌های خارجی، معمولاً باید همین آدرس را در تنظیمات Webhook آن سرویس ثبت کنید.

امنیت Webhook

درخواست‌های Webhook را صرفاً به دلیل داشتن یک URL عمومی معتبر فرض نکنید.

برای Workflowهای حساس، از روش‌هایی مانند اعتبارسنجی امضا، توکن محرمانه، احراز هویت یا بررسی فرستنده استفاده کنید.

مرحله دهم: بررسی تنظیمات OAuth پس از تغییر دامنه

اگر از n8n برای اتصال به سرویس‌هایی مانند Google استفاده می‌کنید، تغییر دامنه ممکن است روی Redirect URI تأثیر بگذارد.

برای مثال، ممکن است قبلاً n8n از طریق IP یا دامنه قدیمی اجرا شده باشد.

پس از تغییر دامنه باید آدرس OAuth Redirect نمایش‌داده‌شده در Credential مربوطه را بررسی کنید.

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

نکته: آدرس Redirect URI را حدس نزنید. مقدار صحیح را از تنظیمات Credential همان نسخه n8n بردارید.

مرحله یازدهم: جلوگیری از دسترسی مستقیم به پورت 5678

یکی از اقدامات مهم امنیتی این است که کاربران فقط از طریق Reverse Proxy به n8n دسترسی داشته باشند.

اگر n8n با Docker اجرا می‌شود، می‌توانید پورت را فقط روی localhost منتشر کنید:


ports:

  - "127.0.0.1:5678:5678"

با این تنظیم، پورت 5678 از طریق IP عمومی سرور مستقیماً منتشر نمی‌شود.

برای بررسی:


sudo ss -lntp | grep 5678

در یک ساختار صحیح، انتظار داریم Bind مربوط به پورت منتشرشده روی آدرس localhost باشد.

اگر n8n روی سرور دیگری اجرا می‌شود، باید به‌جای localhost از شبکه خصوصی امن یا اتصال مناسب بین دو سرور استفاده کنید.

مرحله دوازدهم: رفع خطای 502 Bad Gateway

خطای 502 یکی از مشکلات رایج هنگام اتصال دامنه به n8n است.

این خطا معمولاً زمانی رخ می‌دهد که Reverse Proxy نتواند پاسخ معتبری از Backend دریافت کند.

بررسی اول: وضعیت n8n


sudo docker compose ps

بررسی دوم: پاسخ مستقیم Backend


curl -i http://127.0.0.1:5678/healthz

بررسی سوم: لاگ‌های n8n


sudo docker compose logs --tail=100 n8n

بررسی چهارم: لاگ‌های Nginx

اگر از Nginx استفاده می‌کنید:


sudo tail -n 100 /var/log/nginx/error.log

اگر از OpenLiteSpeed استفاده می‌کنید، مسیر Error Log مربوط به Virtual Host و لاگ اصلی LiteSpeed را بررسی کنید.

دلایل احتمالی

  • کانتینر n8n متوقف شده است.
  • پورت Backend اشتباه تنظیم شده است.
  • Reverse Proxy به IP یا پورت اشتباه متصل می‌شود.
  • ارتباط شبکه بین Proxy و کانتینر برقرار نیست.
  • سرویس n8n هنگام پردازش درخواست دچار خطا شده است.

مرحله سیزدهم: رفع مشکل Too Many Redirects

اگر هنگام باز کردن دامنه با خطای ERR_TOO_MANY_REDIRECTS مواجه شدید، احتمالاً یک حلقه Redirect ایجاد شده است.

برای مثال:


HTTP → HTTPS → HTTP → HTTPS

این مشکل ممکن است ناشی از تنظیمات ناسازگار میان Cloudflare، Reverse Proxy و برنامه باشد.

موارد قابل بررسی

  1. وضعیت SSL/TLS در Cloudflare
  2. قوانین Redirect در Nginx یا OpenLiteSpeed
  3. متغیر N8N_PROTOCOL
  4. هدر X-Forwarded-Proto
  5. تنظیمات HTTPS در لایه‌های مختلف

برای مشاهده مسیر Redirect:


curl -IL --max-redirs 10 https://n8n.example.com

اگر Redirectها تکرار می‌شوند، باید مشخص کنید کدام لایه آن‌ها را ایجاد می‌کند.

از اضافه کردن چند قانون Redirect مشابه در لایه‌های مختلف بدون بررسی نتیجه خودداری کنید.

مرحله چهاردهم: چرا آدرس Webhook هنوز localhost است؟

گاهی اوقات با وجود اتصال دامنه، n8n همچنان آدرس Webhook را با localhost یا پورت 5678 نمایش می‌دهد.

برای مثال:


http://localhost:5678/webhook/example

این مشکل معمولاً به تنظیمات آدرس عمومی مربوط است.

ابتدا بررسی کنید مقدار WEBHOOK_URL صحیح باشد:


WEBHOOK_URL=https://n8n.example.com/

سپس مطمئن شوید این متغیر واقعاً به کانتینر منتقل شده است:


sudo docker compose exec n8n printenv WEBHOOK_URL

اگر مقدار صحیح نبود، تنظیمات Compose را اصلاح کنید.

سپس کانتینر را مجدداً ایجاد کنید:


sudo docker compose up -d --no-deps n8n

پس از راه‌اندازی، آدرس Webhook را دوباره بررسی کنید.

مرحله پانزدهم: رفع مشکل اتصال زنده ویرایشگر n8n

ممکن است پنل n8n باز شود، اما هنگام اجرای Workflow وضعیت Nodeها به‌درستی به‌روزرسانی نشود.

گاهی در Console مرورگر نیز خطاهای ارتباطی مشاهده می‌شود.

دلایل احتمالی:

  • تنظیم نبودن WebSocket Proxy
  • قطع شدن ارتباط توسط Reverse Proxy
  • Timeout کوتاه
  • تنظیمات نادرست HTTPS
  • مسدود شدن درخواست توسط Cloudflare یا WAF
  • مشکلات شبکه یا خود سرویس n8n

برای عیب‌یابی، در مرورگر بخش Developer Tools را باز کنید.

سپس درخواست‌های Network را بررسی کنید.

اگر ارتباط WebSocket استفاده می‌شود، وضعیت Handshake و پاسخ سرور را بررسی کنید.

همچنین لاگ‌های Reverse Proxy و n8n را هم‌زمان مشاهده کنید تا مشخص شود درخواست در کدام مرحله قطع می‌شود.

مرحله شانزدهم: اتصال چند دامنه به n8n

از نظر فنی می‌توانید چند دامنه را به یک Backend هدایت کنید.

برای مثال:


n8n.example.com

automation.example.com

اما بهتر است یک آدرس عمومی اصلی برای پنل و Webhookها انتخاب کنید.

دلیل این موضوع آن است که استفاده از چند آدرس عمومی ممکن است باعث پیچیدگی در موارد زیر شود:

  • OAuth Redirect URI
  • Webhook URL
  • Cookieها
  • تنظیمات CORS و Origin
  • لینک‌های تولیدشده توسط n8n

اگر به چند دامنه نیاز دارید، بهتر است یک دامنه را به‌عنوان دامنه اصلی تعیین کنید و برای سایر دامنه‌ها Redirect مناسب در نظر بگیرید.

مرحله هفدهم: چک‌لیست نهایی اتصال دامنه

پس از انجام تنظیمات، موارد زیر را بررسی کنید:

  • [ ] رکورد DNS به IP صحیح اشاره می‌کند.
  • [ ] n8n روی سرور فعال است.
  • [ ] Reverse Proxy به Backend صحیح متصل می‌شود.
  • [ ] گواهی SSL معتبر است.
  • [ ] آدرس پنل با HTTPS باز می‌شود.
  • [ ] متغیر WEBHOOK_URL صحیح است.
  • [ ] متغیر N8N_EDITOR_BASE_URL صحیح است.
  • [ ] تعداد Proxyهای مورد اعتماد درست تنظیم شده است.
  • [ ] Test Webhook کار می‌کند.
  • [ ] Production Webhook کار می‌کند.
  • [ ] ارتباط زنده محیط ویرایشگر برقرار است.
  • [ ] پورت 5678 بدون ضرورت در اینترنت منتشر نشده است.
  • [ ] تنظیمات OAuth پس از تغییر دامنه بررسی شده‌اند.

جمع‌بندی

در این مقاله یاد گرفتیم چگونه دامنه یا زیردامنه اختصاصی را به n8n متصل کنیم.

ابتدا رکوردهای DNS را تنظیم کردیم و سپس متغیرهای محیطی مهم مانند N8N_HOST، N8N_EDITOR_BASE_URL و WEBHOOK_URL را بررسی کردیم.

در ادامه نحوه اتصال دامنه با Nginx و OpenLiteSpeed را آموزش دادیم و روش فعال‌سازی HTTPS با Let's Encrypt را توضیح دادیم.

همچنین تنظیمات Cloudflare، آزمایش Webhook، بررسی OAuth و رفع خطاهای رایج مانند 502 و Redirect Loop را بررسی کردیم.

با اجرای صحیح این مراحل می‌توانید n8n را از طریق یک آدرس اختصاصی و امن در دسترس قرار دهید و از آن برای اجرای Workflowهای واقعی استفاده کنید.

سوالات متداول

آیا برای اتصال دامنه به n8n باید Docker داشته باشیم؟

خیر. اتصال دامنه از طریق Reverse Proxy انجام می‌شود و به روش نصب n8n محدود نیست. با این حال، Docker یکی از روش‌های رایج اجرای n8n است.

آیا می‌توان n8n را روی زیردامنه اجرا کرد؟

بله. می‌توانید از زیردامنه‌هایی مانند n8n.example.com یا automation.example.com استفاده کنید.

آیا برای اتصال دامنه به n8n باید پورت 5678 باز باشد؟

پورت باید برای Reverse Proxy قابل دسترسی باشد، اما معمولاً نیازی نیست آن را مستقیماً در اینترنت منتشر کنید.

آیا n8n با OpenLiteSpeed کار می‌کند؟

بله. OpenLiteSpeed می‌تواند درخواست‌های دامنه را از طریق Reverse Proxy به n8n منتقل کند.

آیا می‌توان از Cloudflare برای n8n استفاده کرد؟

بله. می‌توانید DNS دامنه را در Cloudflare مدیریت کنید و در صورت نیاز از قابلیت Proxy آن استفاده کنید. باید تنظیمات SSL و قوانین امنیتی را نیز بررسی کنید.

چرا Webhook در n8n آدرس localhost نمایش می‌دهد؟

معمولاً به این دلیل است که WEBHOOK_URL تنظیم نشده یا مقدار آن به کانتینر منتقل نشده است.

آیا اتصال دامنه باعث فعال شدن SSL می‌شود؟

خیر. اتصال DNS و فعال‌سازی SSL دو مرحله متفاوت هستند. برای HTTPS باید گواهی معتبر و تنظیمات وب‌سرور مناسب داشته باشید.

چرا n8n پس از اتصال دامنه خطای 502 می‌دهد؟

این خطا معمولاً به مشکل ارتباط Reverse Proxy با Backend مربوط است. باید وضعیت کانتینر، پورت و لاگ‌های وب‌سرور بررسی شود.

آیا می‌توان n8n را بدون Reverse Proxy به دامنه متصل کرد؟

از نظر فنی روش‌های دیگری نیز وجود دارد، اما برای محیط عملیاتی استفاده از Reverse Proxy با HTTPS معمولاً مدیریت امنیت و گواهی‌ها را ساده‌تر می‌کند.

آیا بعد از تغییر دامنه باید Workflowها را دوباره بسازیم؟

معمولاً خیر. اما باید آدرس‌های Webhook ثبت‌شده در سرویس‌های خارجی، تنظیمات OAuth و هر URL قدیمی که در Workflowها استفاده شده است را بررسی و در صورت نیاز اصلاح کنید.

نظرات (0)

نظرات پس از تأیید مدیر نمایش داده می‌شوند

هنوز نظری ثبت نشده است؛ اولین نفر باشید!

مقالات مرتبط

نصب n8n روی سرور خارج؛ آموزش کامل راه‌اندازی روی VPS خارجی

نصب n8n روی سرور خارج؛ آموزش کامل راه‌اندازی روی VPS خارجی

۲۴ دقیقه
نصب n8n روی سرور ایران؛ آموزش کامل راه‌اندازی و رفع مشکلات اتصال

نصب n8n روی سرور ایران؛ آموزش کامل راه‌اندازی و رفع مشکلات اتصال

۲۰ دقیقه
نصب n8n روی VPS؛ آموزش کامل راه‌اندازی n8n روی سرور مجازی

نصب n8n روی VPS؛ آموزش کامل راه‌اندازی n8n روی سرور مجازی

۲۲ دقیقه
نصب n8n با Docker Compose؛ آموزش کامل راه‌اندازی و مدیریت سرویس

نصب n8n با Docker Compose؛ آموزش کامل راه‌اندازی و مدیریت سرویس

۲۰ دقیقه