راهنمای کامل دسترسی به DirectAdmin، اجرای پنل از طریق Apache/Nginx/LiteSpeed

این مقاله یک راهنمای جامع برای نحوه دسترسی به DirectAdmin، اجرای آن از طریق وب‌سرورهای مختلف (Apache، Nginx، LiteSpeed)، تنظیم IP واقعی کاربران، رفع خطاهای ورود، و تست فعال بودن DirectAdmin با استفاده از Login Key و curl ارائه می‌دهد.

Proxying DA Through Apache/Nginx/LiteSpeedDA Connectivity

~4 دقیقه مطالعه • بروزرسانی ۱۰ اسفند ۱۴۰۴

1. دسترسی به پنل DirectAdmin


DirectAdmin به‌صورت پیش‌فرض روی پورت 2222 گوش می‌دهد. بنابراین آدرس دسترسی به شکل زیر است:


http://12.34.56.78:2222/
http://hostname.yourdomain.com:2222/

اگر پورت 2222 پشت فایروال یا پروکسی مسدود باشد، می‌توان DA را از طریق Apache، Nginx یا LiteSpeed روی پورت 80 یا 443 پروکسی کرد.

---

2. اجرای DirectAdmin از طریق Apache


برای کاربرانی که نمی‌توانند به پورت 2222 وصل شوند، می‌توان یک ساب‌دامین مانند cp.example.com ایجاد کرد و DA را از طریق Apache پروکسی کرد.

2.1 مراحل

  1. ایجاد دامنه cp.example.com در سطح User
  2. فعال‌سازی SSL (ترجیحاً Let’s Encrypt)
  3. رفتن به مسیر: Admin Level → Custom HTTPD Configuration → cp.example.com
  4. افزودن کد زیر در بخش |CUSTOM|:

|*if SSL_TEMPLATE="1"|
|?HAVE_PHP1_FCGI=0|
|?HAVE_PHP2_FCGI=0|
|?HAVE_PHP1_FPM=0|
|?HAVE_PHP2_FPM=0|
|?CLI=0|
|?HAVE_PHP1_CLI=0|
|?HAVE_PHP2_CLI=0|
|?SUPHP=0|
|?HAVE_PHP1_SUPHP=0|
|?HAVE_PHP2_SUPHP=0|
       ProxyRequests off
       SSLProxyEngine on

       ProxyPass /phpmyadmin !
       ProxyPass /phpMyAdmin !
       ProxyPass /webmail !
       ProxyPass /roundcube !

       ProxyPass / "https://server.example.com:2222/"
       ProxyPassReverse / "https://server.example.com:2222/"
|*else|
       RewriteEngine On
       RewriteCond %{HTTPS} off
       RewriteCond %{REQUEST_URI} !^/.well-known
       RewriteRule (.*) Error! Hyperlink reference not valid. [R=301,L]
|*endif|

2.2 تنظیم IP واقعی کاربران


cd /usr/local/directadmin
./directadmin set x_forwarded_from_ip "12.34.56.78"
service directadmin restart
---

3. اجرای DirectAdmin از طریق LiteSpeed


LiteSpeed از ProxyPass به شکل متفاوتی استفاده می‌کند.

3.1 کد مورد نیاز در |CUSTOM|


|*if SSL_TEMPLATE="1"|
      RewriteEngine On
      RewriteRule ^(.*)$ https://cp.|DOMAIN|:2222/$1 [P,L]
|*else|
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteCond %{REQUEST_URI} !^/.well-known
      RewriteRule (.*) Error! Hyperlink reference not valid. [R=301,L]
|*endif|

3.2 خطای LiteSpeed

اگر خطای زیر را دیدید:


Proxy target is not defined on external application list

باید مقصد پروکسی را در پنل LiteSpeed اضافه کنید:


Admin → Configuration → Server → External App → Add
---

4. اجرای DirectAdmin از طریق Nginx


فایل زیر را ویرایش کنید:

/etc/nginx/nginx-includes.conf

کد زیر را اضافه کنید:


server {
   listen "12.34.56.78:80";
   server_name "cp.example.com";

   include /etc/nginx/webapps.conf;

   location / {
       proxy_pass       "http://server.example.com:2222/";
       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_redirect "http://cp.example.com:2222/" "http://cp.example.com/";
   }
}

ری‌استارت:

service nginx restart
---

5. رفع خطاهای ورود به DirectAdmin


اگر ورود انجام نمی‌شود، DA را در حالت Debug سطح 2000 اجرا کنید.

مثال خطا:


Referer port (443) does not match DA's (2222)

راه‌حل: غیرفعال کردن بررسی پورت Referer (Feature ID 2194 در DirectAdmin)

---

6. تست فعال بودن DirectAdmin با curl


6.1 ساخت Login Key

در DirectAdmin:

  • Key Name: curltest
  • Command Allowed: CMD_API_LOGIN_TEST
  • Allowed IPs: 127.0.0.1

6.2 ساخت اسکریپت تست

فایل:

/home/username/da_test.sh

محتوا:


#!/bin/sh
DEBUG=0

USER="username"
PASSWORD="loginkey"

CONFIG=curl_config.txt
echo -n '' > ${CONFIG}
echo "user = \"${USER}:${PASSWORD}\"" >> ${CONFIG}

RUN="curl --config ${CONFIG} --silent --show-error http://127.0.0.1:2222/CMD_API_LOGIN_TEST"

RESULT=`eval $RUN 2>&1`
RET=$?
COUNT=`echo "$RESULT" | grep -c 'error=0'`

if [ "${COUNT}" -gt 0 ]; then
    exit 0;
else
    exit ${RET}
fi

قابل اجرا:

chmod 700 /home/username/da_test.sh

6.3 اجرای تست

/home/username/da_test.sh; echo $?

اگر خروجی 0 باشد، DirectAdmin سالم است.

6.4 اجرای خودکار با Cron

در CronJobs دستور زیر را قرار دهید:

/home/username/da_test.sh

و ایمیل خروجی Cron را فعال کنید تا در صورت بروز مشکل مطلع شوید.

نوشته و پژوهش شده توسط دکتر شاهین صیامی