آموزش نصب و پیکربندی nginx در دایرکت ادمین با جزئیات
مقدمه
این راهنما مرحلهبهمرحله و بهروز برای نصب و پیکربندی Nginx بهعنوان وبسرور یا پروکسی معکوس در کنترلپنل DirectAdmin است. فرض میکنیم سرور لینوکسی (Ubuntu 20.04/22.04 یا CentOS 7/8/Stream) با دسترسی روت یا کاربر دارای sudo دارید. نکات عملی، دستورات نمونه و توصیههای پیکربندی نیز آورده شدهاند.
توضیحات کلی و سناریوها
– دو سناریو معمول:
- Nginx بهعنوان وبسرور اصلی (serving static/PHP از طریق php-fpm یا proxy به Apache غیرفعال)
- Nginx بهعنوان پروکسی معکوس جلوی Apache (همزمان استفاده از Apache برای پردازش PHP/htaccess و Nginx برای استاتیک و کش)
– DirectAdmin بسته به نسخه و تنظیمات، امکان استفاده از Nginx را با پلاگین یا از طریق custombuild فراهم میکند. توصیه میشود از custombuild رسمی DirectAdmin برای سازگاری کامل استفاده کنید.
بخش 1 — پیشنیازها و بررسی اولیه
- بررسی سیستم
– بررسی توزیع:
Ubuntu: lsb_release -a یا cat /etc/os-release CentOS: cat /etc/centos-release
– بررسی فضای دیسک و حافظه:
df -h && free -h
– بررسی DirectAdmin نصب شده و نسخه:
cat /usr/local/directadmin/scripts/version.sh یا /usr/local/directadmin/ directadmin version (ممکن است مسیر متفاوت باشد)
- تهیه بکاپ
– از فایلهای پیکربندی مهم و سایتها بکاپ بگیرید:
/usr/local/directadmin/custombuild/configure /usr/local/directadmin/conf/* /etc/nginx/* (در صورت وجود) /etc/httpd/ یا /etc/apache2/
– میتوانید از ابزار DirectAdmin برای بکاپ حسابها استفاده کنید یا tar gzip دستی:
tar czf /root/backup_directadmin_configs_$(date +%F).tgz /usr/local/directadmin /etc/nginx /etc/httpd /etc/apache2 /home
بخش 2 — نصب Nginx با استفاده از CustomBuild (روش پیشنهادی)
DirectAdmin custombuild امکان ساخت nginx و یکپارچهسازی با DirectAdmin را فراهم میکند.
- ورود به مسیر custombuild
– مسیر معمول: /usr/local/directadmin/custombuild
– اگر custombuild نصب نیست:
cd /usr/local/directadmin wget https://www.directadmin.com/custombuild/latest/custombuild.tar.gz tar xzf custombuild.tar.gz cd custombuild ./build
- ویرایش فایل پیکربندی custombuild
– فایل: /usr/local/directadmin/custombuild/custombuild.conf
– تنظیمات مهم (نمونه):
– set nghttp2, openssl و پیکربندیهای مورد نیاز را بررسی کنید.
– برای فعال کردن Nginx و استفاده از Apache بهعنوان پسزمینه، خطوط زیر را اضافه/ویرایش کنید:
php1_release=php8.1 php1_mode=php-fpm nginx=yes apache=yes
– اگر میخواهید فقط Nginx و php-fpm بدون Apache:
nginx=yes apache=no php1_mode=php-fpm
- نصب/ساخت Nginx و PHP-FPM از طریق custombuild
– به مسیر custombuild رفته و دستورات زیر را اجرا کنید:
./build update ./build set nginx yes ./build nginx ./build php ./build php-fpm
– اگر میخواهید Apache نیز نصب/باقی بماند:
./build apache
– پس از اجرای buildها، سرویسها را ریاستارت کنید:
systemctl restart nginx php8.1-fpm httpd/apache2 (بسته به توزیع)
توجه: نام سرویس php-fpm بسته به نسخه php متفاوت است (php7.4-fpm, php8.1-fpm).

بخش 3 — پیکربندی Nginx برای کار با DirectAdmin
- مسیرهای مهم DirectAdmin برای Nginx
– فایلهای سایتها معمولاً در: /etc/nginx/ یا /etc/nginx/conf.d/
– قالبهای DirectAdmin برای ساخت کانفیگ ممکن است در:
/usr/local/directadmin/custombuild/templates/nginx/ یا /usr/local/directadmin/custombuild/nginx_templates/
– فایلهای اختصاصی هر کاربر معمولاً در /usr/local/directadmin/data/users/<user>/domains/ یا /var/www/html بر اساس تنظیم
- پیکربندی پایه Nginx (مثال)
– تنظیمات عمومی در /etc/nginx/nginx.conf:
worker_processes auto; worker_connections 10240; gzip on; gzip_types text/css application/javascript image/svg+xml; client_max_body_size 50M; (یا کمتر/بیشتر بسته به نیاز)
– include مسیر conf.d و سایتها:
include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;
- پیکربندی برای PHP-FPM
– نمونه location برای پردازش PHP:
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # یا 127.0.0.1:9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
– اطمینان از اینکه php-fpm برای هر کاربر یا pool مجزا تنظیم شده (recommended for security). معمولاً custombuild این را خودکار تنظیم میکند.
- پیکربندی برای پروکسی معکوس جلوی Apache (اگر از هر دو استفاده میکنید)
– روش common: Nginx استاتیک و درخواستهای PHP را به Apache پاس میدهد یا بالعکس.
– نمونه تنظیم Nginx برای پروکسی به Apache:
location / {
proxy_pass http://127.0.0.1:8080; # Apache روی پورت 8080
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-Proto $scheme;
}
– باید Apache را روی پورت غیراصلی (مثلاً 8080) تنظیم کنید (در /etc/httpd/conf/httpd.conf یا /etc/apache2/ports.conf).
بخش 4 — پیکربندیهای DirectAdmin برای ادغام با Nginx
- استفاده از template های DirectAdmin
– مسیر قالبها: /usr/local/directadmin/custombuild/templates/
– قالبهای nginx و apache را میتوان ویرایش کرد تا کانفیگ سایتها هنگام ایجاد/بهروزرسانی بهروزرسانی شود.
– پس از تغییر قالبها، از custombuild برای بازسازی کانفیگ استفاده کنید.
- فعالسازی Nginx در DirectAdmin (در صورت وجود plugin)
– برخی سرویسدهندهها/میزبانها از پلاگین Nginx برای DirectAdmin استفاده میکنند که رابط گرافیکی برای فعال/غیرفعال کردن Nginx per-domain میدهد.
– اگر پلاگین دارید، با مستندات پلاگین نصب و مدیریت کنید.

بخش 5 — SSL و Let’s Encrypt
- استفاده از Let’s Encrypt با Nginx
– DirectAdmin خود دارای مدیریت Let’s Encrypt است؛ اطمینان حاصل کنید که هنگام فعالسازی SSL، کانفیگ Nginx هم بروزرسانی میشود.
– نمونه snippet برای تغییر به 443:
listen 443 ssl; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; include ssl-params.conf; (برای تنظیمات امنیتی TLS)
– تنظیم HTTP -> HTTPS redirect:
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }
- پیشنهادات امنیتی TLS
– استفاده از TLS 1.2 و 1.3
– استفاده از strong ciphers و HSTS
– نمونه directive: ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on;
بخش 6 — بهینهسازی عملکرد و کشینگ
- تنظیمات کش استاتیک در Nginx
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ {
expires 30d;
add_header Cache-Control "public, must-revalidate";
}
- استفاده از fastcgi_cache برای صفحات پویا (وردپرس، پنلها)
– تعریف cache zone در http block:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=MYAPP:10m inactive=60m use_temp_path=off;
– در server/location مربوطه:
fastcgi_cache MYAPP; fastcgi_cache_valid 200 302 10m; fastcgi_cache_valid 404 1m; add_header X-Cache $upstream_cache_status;
- تنظیمات gzip و بهینهسازی TLS برای کاهش زمان بارگذاری
بخش 7 — مدیریت سرویسها و نگهداری
- ریاستارت و وضعیت سرویس
systemctl restart nginx systemctl status nginx journalctl -u nginx -f برای مشاهده لاگ زمان اجرا
- لاگها
– لاگهای دسترسی و خطا معمولاً در /var/log/nginx/access.log و /var/log/nginx/error.log
– DirectAdmin ممکن است لاگهای per-domain را در مسیرهای مخصوص خود ذخیره کند.
- مانیتورینگ
– استفاده از ابزارهایی مانند netdata، prometheus + grafana یا htop و atop برای مانیتورینگ مصرف منابع.
– بررسی regular logrotate برای لاگها.
بخش 8 — رفع خطاهای رایج
- Nginx اجرا نمیشود یا کانفیگ خطا دارد
– nginx -t برای تست کانفیگ
– بررسی اجازهها و مسیر socket php-fpm
– خطاهای common در journalctl یا error.log
- خطاهای 502 Bad Gateway
– معمولاً بهخاطر php-fpm خاموش یا socket/پورت اشتباه
– بررسی اینکه php-fpm در حال اجراست و مسیر fastcgi_pass صحیح است.
- تداخل پورتها (Apache و Nginx هر دو روی 80)
– اگر هردو فعال هستند، یکی باید روی پورت متفاوت (مثلاً Apache روی 8080) باشد یا یکی از آنها متوقف شود.
بخش 9 — مثال کامل کانفیگ (نمونه عملی برای یک دامین example.com)
– فایل /etc/nginx/conf.d/example.com.conf نمونه (خلاصه):
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
root /home/username/domains/example.com/public_html;
index index.php index.html index.htm;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ {
expires 30d;
add_header Cache-Control "public, must-revalidate";
}
}
بخش 10 — نکات امنیتی و عملیاتی
– همیشه سرویسها را بهروز نگه دارید (apt/yum update).
– از کاربران و poolهای php-fpm مجزا برای ایزولهسازی هر سایت استفاده کنید.
– محدود کردن آپلودها و تنظیم client_max_body_size مناسب.
– فعال کردن fail2ban برای جلوگیری از حملات brute-force (برای محدود کردن درخواستهای بد به Nginx و سرویسهای SSH/DA).
– بررسی تنظیمات فایلهای .htaccess: اگر Apache حذف شود، باید قواعد .htaccess به معادل Nginx تبدیل شوند.
بخش 11 — منابع مفید / مستندات
– مستندات رسمی DirectAdmin custombuild (برای آخرین تغییرات و گزینهها)
– مستندات Nginx: nginx.org
– مستندات PHP-FPM برای poolها و امنیت
خلاصه اجرایی
- بکاپ کامل از DirectAdmin و سایتها تهیه شده؟
- custombuild بهروز و پیکربندی شده (nginx=yes, php_mode=php-fpm)؟
- Nginx و php-fpm ساخته و اجرا میشوند (systemctl status)?
- کانفیگ nginx -t بدون خطا است و سرویس ریاستارت شده؟
- SSL و ریدایرکتها تنظیم شدهاند؟
- لاگها و مانیتورینگ فعال است و سیاست بکاپ/بهروزرسانی تنظیم شده؟





قوانین ارسال دیدگاه
لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.