اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری، سرور مجازی/اختصاصی، هاست و دامنه

اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری

دریافت مشاوره رایگان

آموزش نصب و پیکربندی nginx در دایرکت ادمین با جزئیات

مقدمه

 

این راهنما مرحله‌به‌مرحله و به‌روز برای نصب و پیکربندی Nginx به‌عنوان وب‌سرور یا پروکسی معکوس در کنترل‌پنل DirectAdmin است. فرض می‌کنیم سرور لینوکسی (Ubuntu 20.04/22.04 یا CentOS 7/8/Stream) با دسترسی روت یا کاربر دارای sudo دارید. نکات عملی، دستورات نمونه و توصیه‌های پیکربندی نیز آورده شده‌اند.

 

توضیحات کلی و سناریوها

 

– دو سناریو معمول:

  1. Nginx به‌عنوان وب‌سرور اصلی (serving static/PHP از طریق php-fpm یا proxy به Apache غیرفعال)
  2. Nginx به‌عنوان پروکسی معکوس جلوی Apache (همزمان استفاده از Apache برای پردازش PHP/htaccess و Nginx برای استاتیک و کش)

– DirectAdmin بسته به نسخه و تنظیمات، امکان استفاده از Nginx را با پلاگین یا از طریق custombuild فراهم می‌کند. توصیه می‌شود از custombuild رسمی DirectAdmin برای سازگاری کامل استفاده کنید.

 

بخش 1 — پیش‌نیازها و بررسی اولیه

 

  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 (ممکن است مسیر متفاوت باشد)

 

 

  1. تهیه بکاپ

– از فایل‌های پیکربندی مهم و سایت‌ها بکاپ بگیرید:

/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 را فراهم می‌کند.

 

  1. ورود به مسیر 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

 

 

  1. ویرایش فایل پیکربندی 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

 

 

  1. نصب/ساخت 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

 

  1. مسیرهای مهم 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 بر اساس تنظیم

 

  1. پیکربندی پایه 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/*;

 

 

  1. پیکربندی برای 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 این را خودکار تنظیم می‌کند.

 

  1. پیکربندی برای پروکسی معکوس جلوی 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

 

  1. استفاده از template های DirectAdmin

– مسیر قالب‌ها: /usr/local/directadmin/custombuild/templates/

– قالب‌های nginx و apache را می‌توان ویرایش کرد تا کانفیگ سایت‌ها هنگام ایجاد/به‌روزرسانی به‌روزرسانی شود.

– پس از تغییر قالب‌ها، از custombuild برای بازسازی کانفیگ استفاده کنید.

 

  1. فعال‌سازی Nginx در DirectAdmin (در صورت وجود plugin)

– برخی سرویس‌دهنده‌ها/میزبان‌ها از پلاگین Nginx برای DirectAdmin استفاده می‌کنند که رابط گرافیکی برای فعال/غیرفعال کردن Nginx per-domain می‌دهد.

– اگر پلاگین دارید، با مستندات پلاگین نصب و مدیریت کنید.

 

 

بخش 5 — SSL و Let’s Encrypt

 

  1. استفاده از 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; }

 

 

  1. پیشنهادات امنیتی TLS

– استفاده از TLS 1.2 و 1.3

– استفاده از strong ciphers و HSTS

– نمونه directive: ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on;

 

بخش 6 — بهینه‌سازی عملکرد و کشینگ

 

  1. تنظیمات کش استاتیک در Nginx
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ {
    expires 30d;
    add_header Cache-Control "public, must-revalidate";
  }

 

  1. استفاده از 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;

 

  1. تنظیمات gzip و بهینه‌سازی TLS برای کاهش زمان بارگذاری

 

بخش 7 — مدیریت سرویس‌ها و نگهداری

 

  1. ری‌استارت و وضعیت سرویس
systemctl restart nginx
systemctl status nginx
journalctl -u nginx -f برای مشاهده لاگ زمان اجرا

 

 

  1. لاگ‌ها

– لاگ‌های دسترسی و خطا معمولاً در /var/log/nginx/access.log و /var/log/nginx/error.log

DirectAdmin ممکن است لاگ‌های per-domain را در مسیرهای مخصوص خود ذخیره کند.

 

  1. مانیتورینگ

– استفاده از ابزارهایی مانند netdata، prometheus + grafana یا htop و atop برای مانیتورینگ مصرف منابع.

– بررسی regular logrotate برای لاگ‌ها.

 

بخش 8 — رفع خطاهای رایج

 

  1. Nginx اجرا نمی‌شود یا کانفیگ خطا دارد

– nginx -t برای تست کانفیگ

– بررسی اجازه‌ها و مسیر socket php-fpm

– خطاهای common در journalctl یا error.log

 

  1. خطاهای 502 Bad Gateway

– معمولاً به‌خاطر php-fpm خاموش یا socket/پورت اشتباه

– بررسی اینکه php-fpm در حال اجراست و مسیر fastcgi_pass صحیح است.

 

  1. تداخل پورت‌ها (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ها و امنیت

 

خلاصه اجرایی

 

  1. بکاپ کامل از DirectAdmin و سایت‌ها تهیه شده؟
  2. custombuild به‌روز و پیکربندی شده (nginx=yes, php_mode=php-fpm)؟
  3. Nginx و php-fpm ساخته و اجرا می‌شوند (systemctl status)?
  4. کانفیگ nginx -t بدون خطا است و سرویس ری‌استارت شده؟
  5. SSL و ریدایرکت‌ها تنظیم شده‌اند؟
  6. لاگ‌ها و مانیتورینگ فعال است و سیاست بکاپ/به‌روزرسانی تنظیم شده؟
به این مطلب امتیاز بدهید:

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


20 + 17

قوانین

قوانین ارسال دیدگاه

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