🚀 آموزش وب‌سرور و کنترل‌پنل

آموزش نصب Nginx در DirectAdmin، cPanel و CyberPanel؛ تنظیم حرفه‌ای، خطاهای رایج و سوالات کاربران

Nginx فقط یک وب‌سرور سریع نیست؛ در کنترل‌پنل‌ها می‌تواند نقش وب‌سرور اصلی، Reverse Proxy، کش استاتیک، لایه جلویی Apache یا مکمل PHP-FPM را داشته باشد. اما روش نصب آن در DirectAdmin، cPanel و CyberPanel یکسان نیست. در این راهنمای کامل، مسیر درست هر پنل، دستورات SSH، چالش‌های واقعی کاربران، خطاهای 502/504/403، مشکل باز نشدن سایت، تداخل با Apache/OpenLiteSpeed، تنظیم پورت‌ها، کش، SSL و سوالات پرتکرار را بررسی می‌کنیم.

خلاصه خیلی مهم قبل از شروع

اگر فقط یک نکته از این مقاله بردارید، این است: نصب Nginx روی هر کنترل‌پنل باید با ابزار رسمی همان کنترل‌پنل انجام شود. نصب دستی با apt یا dnf روی سروری که DirectAdmin، cPanel یا CyberPanel دارد، ممکن است پورت‌های 80 و 443 را بگیرد، SSL را خراب کند، VirtualHostها را نادیده بگیرد و سایت‌ها را از دسترس خارج کند.

  • DirectAdmin: مسیر رسمی، CustomBuild است. می‌توانید Nginx کامل یا Nginx+Apache را انتخاب کنید.
  • cPanel/WHM: مسیر رسمی، NGINX Manager / ea-nginx است و معمولاً Nginx جلوی Apache قرار می‌گیرد.
  • CyberPanel: ذاتاً با OpenLiteSpeed/LiteSpeed کار می‌کند؛ نصب Nginx به‌عنوان جایگزین مستقیم معمولاً توصیه نمی‌شود.
  • کاربر تازه‌کار: قبل از تغییر وب‌سرور، Snapshot یا Backup بگیرد و یک نشست SSH دوم باز نگه دارد.

Nginx چیست و چرا روی سرور محبوب است؟

Nginx یک وب‌سرور پرکاربرد و سبک است که می‌تواند درخواست‌های HTTP/HTTPS را با مصرف منابع کمتر مدیریت کند. در بسیاری از سرورها از Nginx برای سرو فایل‌های استاتیک، Reverse Proxy، Load Balancing، کش، اتصال به PHP-FPM و بهبود پاسخ‌دهی در ترافیک بالا استفاده می‌شود.

اما در دنیای کنترل‌پنل‌ها، Nginx همیشه به معنی «حذف Apache» نیست. گاهی Nginx وب‌سرور اصلی است، گاهی جلوی Apache می‌ایستد، گاهی فقط فایل‌های استاتیک را سرو می‌کند و گاهی اصلاً نباید به سیستم اضافه شود چون پنل از وب‌سرور دیگری مثل OpenLiteSpeed استفاده می‌کند.

وب‌سرور اصلی

در این حالت Nginx مستقیماً درخواست‌ها را می‌گیرد و PHP معمولاً از طریق PHP-FPM اجرا می‌شود.

Reverse Proxy

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

کش و بهینه‌سازی

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

DirectAdmin، cPanel یا CyberPanel؟ مسیر درست نصب Nginx کدام است؟

کنترل‌پنل روش درست چه زمانی مناسب است؟ ریسک مهم
DirectAdmin CustomBuild: Nginx یا Nginx+Apache وقتی می‌خواهید Nginx وب‌سرور اصلی باشد یا برای سازگاری .htaccess از Nginx+Apache استفاده کنید. اگر PHP-FPM یا پورت‌ها درست تنظیم نشوند، 502/504 یا خطای باز نشدن سایت رخ می‌دهد.
cPanel/WHM NGINX Manager / ea-nginx وقتی می‌خواهید Nginx به عنوان Reverse Proxy و کش جلوی Apache فعال شود. نصب دستی Nginx خارج از EA4 می‌تواند با WHM، Apache و SSL تداخل ایجاد کند.
CyberPanel معمولاً نصب جایگزین توصیه نمی‌شود؛ استفاده از OpenLiteSpeed/LiteSpeed وقتی CyberPanel دارید، بهتر است از موتور داخلی آن، LSCache و تنظیمات خود پنل استفاده شود. نصب Nginx روی 80/443 ممکن است OpenLiteSpeed و سایت‌های ساخته‌شده در CyberPanel را از کار بیندازد.

چک‌لیست قبل از نصب یا فعال‌سازی Nginx

بخش بزرگی از مشکلات کاربران به دلیل عجله در تغییر وب‌سرور رخ می‌دهد. قبل از هر تغییری این موارد را بررسی کنید.

Snapshot یا بکاپ بگیرید تغییر وب‌سرور روی همه سایت‌ها، SSL و PHP اثر می‌گذارد. روی سرور تولیدی بدون بکاپ شروع نکنید.
یک نشست SSH دوم باز کنید بعد از تغییر وب‌سرور، نشست قبلی را نبندید تا اگر پورت یا سرویس مشکل داشت دسترسی داشته باشید.
پورت‌های 80 و 443 را بررسی کنید ببینید الان Apache، Nginx، OpenLiteSpeed یا سرویس دیگری روی این پورت‌ها فعال است.
نوع PHP را بدانید Nginx معمولاً با PHP-FPM کار می‌کند. اگر PHP-FPM فعال یا درست ساخته نشده باشد، خطای 502 رایج است.
SSL و AutoSSL/Let’s Encrypt را چک کنید بعد از تغییر وب‌سرور، کانفیگ SSL باید دوباره بازسازی یا تست شود.

دستورهای بررسی قبل از شروع

# چه چیزی روی پورت‌های وب گوش می‌کند؟
ss -tulpn | grep -E ':80|:443|:8080|:7080|:8090|:2087|:2222'

# وضعیت سرویس‌های رایج
systemctl status nginx --no-pager 2>/dev/null
systemctl status httpd --no-pager 2>/dev/null
systemctl status apache2 --no-pager 2>/dev/null
systemctl status lsws --no-pager 2>/dev/null
systemctl status lscpd --no-pager 2>/dev/null

# بررسی IPهای سرور
ip a

# تست DNS دامنه
dig +short example.com
dig +short www.example.com

نکته سلام‌سرور

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

آموزش نصب Nginx در DirectAdmin با CustomBuild

در DirectAdmin نصب Nginx باید از مسیر CustomBuild انجام شود. این روش باعث می‌شود DirectAdmin کانفیگ سایت‌ها، PHP-FPM، SSL و VirtualHostها را مطابق ساختار خودش بسازد. در نسخه‌های جدید، دستور da build استفاده می‌شود.

روش پیشنهادی جدید با da build

# ورود با root
da build update

# انتخاب Nginx به عنوان وب‌سرور اصلی
da build set webserver nginx

# Nginx برای PHP به PHP-FPM نیاز دارد
da build set php1_mode php-fpm

# ساخت و نصب Nginx
da build nginx

# بازسازی PHP
da build php

# بازنویسی کانفیگ‌ها
da build rewrite_confs

روش قدیمی‌تر CustomBuild برای سرورهایی که da build ندارند

cd /usr/local/directadmin/custombuild

./build update
./build set webserver nginx
./build set php1_mode php-fpm
./build nginx
./build php n
./build rewrite_confs

بعد از نصب چه چیزهایی را تست کنیم؟

# تست وضعیت Nginx
systemctl status nginx --no-pager

# تست کانفیگ Nginx
nginx -t

# ری‌لود امن کانفیگ
systemctl reload nginx

# بررسی لاگ خطا
tail -n 100 /var/log/nginx/error.log

# بررسی PHP-FPM
systemctl status php-fpm* --no-pager 2>/dev/null || true

هشدار مهم درباره .htaccess

Nginx مثل Apache فایل .htaccess را مستقیم اجرا نمی‌کند. اگر سایت وردپرسی یا اسکریپت شما وابسته به rewriteهای Apache است، باید مطمئن شوید DirectAdmin کانفیگ rewrite لازم را برای Nginx ساخته یا از حالت Nginx+Apache استفاده کنید.

نصب Nginx+Apache در DirectAdmin؛ انتخاب امن‌تر برای سازگاری .htaccess

اگر می‌خواهید Nginx سرعت سرو فایل‌های استاتیک را بهتر کند اما همچنان سازگاری Apache و .htaccess حفظ شود، حالت Nginx+Apache معمولاً انتخاب امن‌تری است. در این مدل، Nginx جلوی Apache قرار می‌گیرد؛ فایل‌های استاتیک را خودش پاسخ می‌دهد و درخواست‌های PHP را به Apache/PHP-FPM عبور می‌دهد.

da build set webserver nginx_apache
da build nginx_apache
da build php
da build rewrite_confs

نسخه CustomBuild قدیمی‌تر

cd /usr/local/directadmin/custombuild
./build update
./build set webserver nginx_apache
./build nginx_apache
./build php n
./build rewrite_confs
حالت مزیت محدودیت
Nginx کامل سریع‌تر و سبک‌تر برای بسیاری از سناریوها نیاز به PHP-FPM و توجه جدی به rewrite دارد
Nginx+Apache سازگاری بهتر با .htaccess و وردپرس‌های قدیمی یک لایه بیشتر دارد و کانفیگ‌ها باید هماهنگ باشند

آموزش نصب Nginx در cPanel/WHM با NGINX Manager

در cPanel بهتر است Nginx را از WHM و EasyApache 4 نصب کنید، نه به‌صورت دستی. مسیر گرافیکی معمولاً این است:

WHM → Software → NGINX Manager → Install

در این حالت cPanel، Nginx را در ساختار خودش نصب می‌کند، پورت‌های Apache را تنظیم می‌کند و برای اکانت‌ها امکان کش Nginx را فعال یا قابل مدیریت می‌کند.

نصب از SSH در cPanel

# AlmaLinux / Rocky / CloudLinux
dnf install ea-nginx

# CentOS 7
yum install ea-nginx

# Ubuntu
apt install --purge ea-nginx

مدیریت Nginx در WHM

  • Use Caching by Default: فعال یا غیرفعال کردن کش پیش‌فرض برای اکانت‌ها.
  • Clear Cache for All Users: پاکسازی کش همه کاربران.
  • Restart NGINX: راه‌اندازی مجدد سرویس Nginx.
  • Rebuild Configuration: بازسازی کانفیگ Nginx.
  • User Settings: فعال/غیرفعال کردن کش برای هر اکانت.

حذف Nginx در cPanel

# AlmaLinux / Rocky / CloudLinux
dnf uninstall ea-nginx

# CentOS 7
yum uninstall ea-nginx

# Ubuntu
apt purge ea-nginx

چرا نصب دستی Nginx روی cPanel خطرناک است؟

cPanel وب‌سرور، PHP، SSL، کاربران، VirtualHostها و سرویس‌ها را از طریق WHM و EasyApache مدیریت می‌کند. اگر Nginx را خارج از این ساختار نصب کنید، ممکن است پورت‌های اصلی را بگیرد، AutoSSL را دچار مشکل کند یا تنظیمات Apache/cPanel را دور بزند.

نصب Nginx روی CyberPanel؛ آیا کار درستی است؟

CyberPanel به‌صورت پیش‌فرض برای کار با OpenLiteSpeed/LiteSpeed طراحی شده است. بنابراین وقتی کاربر می‌پرسد «چطور روی CyberPanel Nginx نصب کنم؟» پاسخ حرفه‌ای این است که اول هدف را مشخص کنیم: اگر هدف فقط سرعت وردپرس است، معمولاً مسیر درست، تنظیم OpenLiteSpeed، LiteSpeed Cache، کش، PHP و دیتابیس است؛ نه جایگزینی وب‌سرور با Nginx.

روی CyberPanel، Nginx را روی 80 و 443 نصب نکنید مگر دقیقاً می‌دانید چه می‌کنید

اگر Nginx را با apt/dnf نصب کنید و روی پورت‌های 80/443 بالا بیاید، ممکن است با OpenLiteSpeed تداخل کند و سایت‌های ساخته‌شده در CyberPanel از کار بیفتند. CyberPanel تنظیمات سایت، SSL، PHP و کش را برای موتور خودش مدیریت می‌کند.

چه زمانی Nginx کنار CyberPanel قابل قبول است؟

  • وقتی یک اپلیکیشن جداگانه روی پورت متفاوت دارید و می‌خواهید با دقت Reverse Proxy بسازید.
  • وقتی Nginx فقط داخل Docker یا شبکه جداگانه استفاده می‌شود و پورت‌های CyberPanel را نمی‌گیرد.
  • وقتی از ابتدا تصمیم گرفته‌اید CyberPanel را کنار بگذارید و سرور را با Nginx خام مدیریت کنید.

روش امن‌تر برای کاربر CyberPanel

# بررسی اینکه OpenLiteSpeed روی چه پورت‌هایی فعال است
ss -tulpn | grep -E ':80|:443|:7080|:8090'

# وضعیت سرویس‌های CyberPanel/OpenLiteSpeed
systemctl status lsws --no-pager
systemctl status lscpd --no-pager

# لاگ‌های مفید
tail -n 100 /usr/local/lsws/logs/error.log 2>/dev/null
tail -n 100 /usr/local/lscp/logs/error.log 2>/dev/null

Nginx Cache، وردپرس و ووکامرس؛ کجا باید مراقب باشیم؟

کش Nginx می‌تواند سرعت سایت را بالا ببرد، اما اگر اشتباه تنظیم شود، بزرگ‌ترین دردسر فروشگاه‌ها و سایت‌های عضویت می‌شود. رایج‌ترین مشکل این است که صفحه سبد خرید، پرداخت، حساب کاربری یا API اشتباهاً کش می‌شود.

بخش سایت کش شود؟ توضیح
صفحه اصلی و مقالات معمولاً بله برای محتوای عمومی و ثابت مناسب است.
wp-admin خیر پنل مدیریت نباید کش شود.
سبد خرید و پرداخت خیر کش این بخش باعث نمایش اطلاعات اشتباه به کاربران می‌شود.
حساب کاربری خیر اطلاعات خصوصی و نشست کاربر نباید کش شود.
Webhook پرداخت خیر درگاه پرداخت و API باید درخواست واقعی را دریافت کنند.

چک‌لیست کش برای ووکامرس

  • آدرس‌های cart، checkout، my-account و wc-api را از کش خارج کنید.
  • برای کاربران لاگین‌شده کش عمومی را غیرفعال کنید.
  • بعد از فعال‌سازی کش، پرداخت تستی انجام دهید.
  • اگر سایت چندزبانه یا چندارزی است، کش را با کوکی و زبان هماهنگ کنید.

SSL و HTTPS بعد از فعال‌سازی Nginx

بعد از تغییر وب‌سرور، یکی از سوالات رایج کاربران این است: «چرا SSL قبلاً کار می‌کرد اما الان خطا می‌دهد؟» دلیل می‌تواند بازسازی نشدن کانفیگ، فعال نبودن پورت 443، مشکل SNI، باقی‌ماندن کانفیگ قدیمی یا کش مرورگر باشد.

تست‌های سریع SSL

# تست اتصال HTTPS از خود سرور
curl -I https://example.com

# مشاهده گواهی
openssl s_client -connect example.com:443 -servername example.com /dev/null | openssl x509 -noout -subject -issuer -dates

# تست کانفیگ Nginx
nginx -t

در DirectAdmin بهتر است بعد از تغییر وب‌سرور، کانفیگ‌ها را با da build rewrite_confs بازسازی کنید. در cPanel از WHM و NGINX Manager برای Rebuild Configuration استفاده کنید. در CyberPanel هم از ابزار SSL خود پنل و لاگ‌های OpenLiteSpeed کمک بگیرید.

مشکلات رایج نصب Nginx و راه‌حل‌ها

خطای ۱: nginx: [emerg] bind() to 0.0.0.0:80 failed

این خطا یعنی پورت 80 یا 443 قبلاً توسط سرویس دیگری گرفته شده است. در کنترل‌پنل‌ها این سرویس ممکن است Apache، OpenLiteSpeed یا یک Nginx قدیمی باشد.

ss -tulpn | grep -E ':80|:443'
systemctl status nginx --no-pager
systemctl status httpd --no-pager
systemctl status apache2 --no-pager
systemctl status lsws --no-pager

خطای ۲: 502 Bad Gateway

در DirectAdmin با Nginx کامل، این خطا اغلب به PHP-FPM، سوکت PHP، پر بودن صف اتصال یا down بودن سرویس PHP مربوط است.

nginx -t
systemctl status php-fpm* --no-pager 2>/dev/null || true
tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/php-fpm/error.log 2>/dev/null || true

خطای ۳: 504 Gateway Time-out

معمولاً یعنی PHP یا upstream دیر پاسخ داده است. در پروژه‌های سنگین وردپرس، ایمپورت، بکاپ، ووکامرس یا APIهای کند زیاد دیده می‌شود.

# DirectAdmin/Nginx: بررسی تایم‌اوت‌ها
grep -R "fastcgi_read_timeout|proxy_read_timeout" /etc/nginx 2>/dev/null

# بررسی زمان اجرای PHP
php -i | grep -E "max_execution_time|memory_limit"

خطای ۴: سایت وردپرس صفحه 404 می‌دهد

اگر بعد از تغییر از Apache به Nginx، نوشته‌ها یا لینک‌های داخلی وردپرس 404 شدند، مشکل معمولاً از rewrite است. در Nginx فایل .htaccess اجرا نمی‌شود و باید rewrite مناسب ساخته شود یا از حالت Nginx+Apache استفاده کنید.

خطای ۵: پنل باز نمی‌شود اما سایت باز است

ممکن است پورت پنل در فایروال بسته باشد یا سرویس پنل مشکل داشته باشد. پورت‌های مهم: DirectAdmin معمولاً 2222، CyberPanel معمولاً 8090، WHM معمولاً 2087.

ss -tulpn | grep -E ':2222|:8090|:2087'
csf -l 2>/dev/null | grep -E '2222|8090|2087' || true
iptables -L -n -v | head -n 80

خطای ۶: کش Nginx تغییرات سایت را نشان نمی‌دهد

کش را پاک کنید و مطمئن شوید CDN، کش پلاگین وردپرس و کش Nginx همزمان مشکل ایجاد نکرده‌اند.

خطای ۷: فایل‌های مخفی یا .htaccess دانلود/نمایش داده می‌شوند

در کانفیگ حرفه‌ای نباید فایل‌های حساس مثل .env، .git و .htaccess از وب قابل مشاهده باشند. این موضوع را بعد از هر تغییر وب‌سرور تست کنید.

دستورهای مدیریتی مهم Nginx

دستور کاربرد
nginx -t تست syntax کانفیگ Nginx قبل از reload
systemctl reload nginx بارگذاری مجدد کانفیگ بدون قطع کامل سرویس
systemctl restart nginx Restart کامل سرویس Nginx
tail -f /var/log/nginx/error.log مشاهده زنده خطاهای Nginx
ss -tulpn مشاهده پورت‌ها و سرویس‌هایی که گوش می‌کنند
curl -I https://domain.com بررسی هدرها، SSL و وضعیت پاسخ سایت

قانون طلایی تغییر کانفیگ

هیچ‌وقت بعد از ویرایش کانفیگ، مستقیم restart نکنید. اول nginx -t بزنید. اگر تست موفق بود، reload کنید. این کار جلوی down شدن سایت به خاطر یک خطای ساده مثل نقطه‌ویرگول جاافتاده را می‌گیرد.

سوالات متداول درباره نصب Nginx در DirectAdmin، cPanel و CyberPanel

آیا نصب Nginx در DirectAdmin بهتر از Apache است؟

برای بسیاری از سایت‌ها Nginx سریع و سبک است، اما اگر سایت شما به .htaccess، rewriteهای خاص یا ماژول‌های Apache وابسته است، حالت Nginx+Apache می‌تواند انتخاب امن‌تری باشد.

آیا در DirectAdmin باید PHP-FPM فعال باشد؟

بله، برای استفاده از Nginx در DirectAdmin معمولاً PHP-FPM لازم است. اگر PHP-FPM درست نصب یا فعال نشود، خطای 502 Bad Gateway رایج می‌شود.

آیا روی cPanel می‌توان Nginx خام نصب کرد؟

از نظر لینوکس ممکن است، اما برای سرور cPanel توصیه نمی‌شود. مسیر درست، NGINX Manager و بسته ea-nginx است تا WHM، Apache، SSL و اکانت‌ها هماهنگ بمانند.

در cPanel، Nginx جای Apache را کامل می‌گیرد؟

در پیاده‌سازی رایج cPanel، Nginx به عنوان Reverse Proxy و کش جلوی Apache قرار می‌گیرد و ساختار cPanel/EA4 همچنان مدیریت اصلی را انجام می‌دهد.

آیا روی CyberPanel باید Nginx نصب کنیم؟

معمولاً خیر. CyberPanel برای OpenLiteSpeed/LiteSpeed ساخته شده است. اگر هدف افزایش سرعت وردپرس است، تنظیم LSCache، PHP، دیتابیس و OpenLiteSpeed مسیر درست‌تری است.

بعد از فعال‌سازی Nginx چرا SSL خطا می‌دهد؟

ممکن است کانفیگ SSL بازسازی نشده باشد، پورت 443 توسط سرویس دیگری گرفته شده باشد یا certificate برای hostname/domain درست اعمال نشده باشد. در DirectAdmin rewrite_confs، در cPanel Rebuild Configuration و در CyberPanel ابزار SSL خود پنل را بررسی کنید.

چرا بعد از نصب Nginx صفحات وردپرس 404 می‌شوند؟

چون Nginx فایل .htaccess را مثل Apache اجرا نمی‌کند. باید rewrite مناسب Nginx ساخته شود یا از حالت Nginx+Apache استفاده کنید.

آیا Nginx باعث افزایش سرعت قطعی سایت می‌شود؟

نه همیشه. اگر مشکل سایت از دیتابیس، افزونه‌های سنگین، تصاویر، API خارجی یا کمبود منابع باشد، فقط نصب Nginx مشکل را حل نمی‌کند. باید لاگ، TTFB، PHP-FPM، MySQL و کش هم بررسی شوند.

چطور بفهمم مشکل از Nginx است یا PHP؟

اگر Nginx خطای 502/504 می‌دهد، لاگ Nginx و وضعیت PHP-FPM را همزمان بررسی کنید. اگر فایل HTML ساده باز می‌شود اما PHP خطا دارد، احتمالاً مشکل از PHP-FPM یا اپلیکیشن است.

آیا قبل از نصب Nginx باید فایروال را تنظیم کنیم؟

بله. پورت‌های 80 و 443 برای سایت و پورت‌های پنل مثل 2222، 2087 یا 8090 باید باز باشند. اگر CSF دارید، بعد از تغییر وب‌سرور قوانین را تست کنید.

جمع‌بندی

Nginx ابزار قدرتمندی است، اما روی کنترل‌پنل‌ها باید با مسیر درست نصب شود. در DirectAdmin از CustomBuild استفاده کنید، در cPanel از NGINX Manager و ea-nginx، و در CyberPanel معمولاً به جای نصب Nginx، OpenLiteSpeed و LSCache را درست تنظیم کنید. اگر قبل از نصب بکاپ بگیرید، پورت‌ها را بررسی کنید، PHP-FPM را درست بسازید و بعد از تغییر لاگ‌ها را بخوانید، بیشتر خطاهای رایج مثل 502، 504، 404، SSL Error و تداخل پورت قابل پیشگیری هستند.