اطلاعات تماس

تهران ، آیت الله کاشانی ، پلاک 160 واحد 6

92001474 - 021

[email protected]

ناحیه کاربری

آموزش نصب NGINX در لینوکس 🚀 ( راهنمای جامع اوبونتو، آلما لینوکس و سی پنل )

اگر تا به حال مدیریت یک سایت پرترافیک یا یک سرور لینوکسی را بر عهده داشته اید، حتما می دانید که در ساعات اوج بازدید، اولین سرویسی که زیر فشار درخواست ها کم می آورد و باعث مصرف ۱۰۰ درصدی رم سرور می شود، وب سرور سنتی آپاچی ( Apache ) است! در اوایل دهه ۲۰۰۰ میلادی، مهندسان شبکه با چالشی بزرگ به نام مشکل C10K روبرو بودند؛ اینکه چطور یک سرور واحد بتواند به صورت همزمان به ۱۰ هزار اتصال فعال پاسخ دهد بدون اینکه کرش کند. پاسخ مهندس روسی، ایگور سیسویف، به این بحران، خلق غول سبز دنیای وب یعنی وب سرور NGINX ( انجین ایکس ) بود.

امروزه NGINX دیگر فقط یک وب سرور ساده نیست؛ بلکه به عنوان قلب تپنده بزرگ ترین سایت های جهان، نقش پروکسی معکوس ( Reverse Proxy )، توزیع کننده بار ( Load Balancer ) و سیستم کشینگ فوق سریع را بازی می کند. اما نصب و راه اندازی آن روی سرور مجازی یا اختصاصی، قلق های فنی خاص خود را دارد؛ از تداخل پورت ۸۰ گرفته تا خطاهای مجوز دسترسی در سیستم عامل های خانواده ردهت! در این مستند جامع و کاملا تجربی از مگ نگارنوین، قصد داریم آموزش نصب NGINX را در سیستم عامل های اوبونتو، آلما لینوکس و کنترل پنل سی پنل به صورت قدم به قدم، همراه با نحوه ساخت ویرچوال هاست و دستورات عیب یابی بررسی کنیم.

سرور مجازی رسپینا


وب سرور NGINX چیست و چرا معماری آن تا این حد سریع است؟ 🧠

برای اینکه بدانید چرا باید سراغ نصب انجین ایکس بروید، باید تفاوت معماری آن را با وب سرورهای قدیمی درک کنید. وب سرور آپاچی بر اساس معماری Process-Driven ( مبتنی بر پردازش یا رشته ) کار می کند؛ یعنی به ازای هر کاربری که وارد سایت می شود، یک رشته ( Thread ) جدید در رم سرور ایجاد می کند. اگر ۲۰۰۰ کاربر همزمان وارد سایت شوند، رم سرور پر شده و سرور فریز می شود.

در مقابل، NGINX از یک معماری مدرن، غیر همزمان و رویداد محور ( Event-Driven / Asynchronous ) استفاده می کند. در این ساختار، یک پردازش مادر ( Master Process ) چند پردازش کارگر محدود ( Worker Processes – معمولا به تعداد هسته های CPU سرور ) ایجاد می کند و هر کدام از این کارگرها می توانند هزاران اتصال همزمان را در یک حلقه فوق سریع و تنها با مصرف چند مگابایت رم مدیریت کنند! مهم ترین کاربردهای این نرم افزار در سرور عبارتند از:

  • 📌 وب سرور مستقل ( Standalone Web Server ): جایگزینی کامل آپاچی و اجرای فوق سریع فایل های استاتیک ( تصاویر، CSS، JS ) و اتصال به PHP-FPM برای اجرای سایت های وردپرسی و لاراول ( معماری LEMP ).
  • 📌 پروکسی معکوس ( Reverse Proxy ): قرار گرفتن در خط مقدم سرور ( جلوی آپاچی، Node.js، پایتون یا Go ) برای دریافت ترافیک کاربران، دفع حملات اولیه و کش کردن صفحات.
  • 📌 توزیع کننده بار ترافیکی ( Load Balancer ): تقسیم کردن ترافیک ورودی بین چندین سرور بک اند مختلف برای جلوگیری از دان شدن سرویس در زمان پیک ترافیک.
آموزش نصب NGINX
آموزش نصب NGINX

پیش نیاز حیاتی قبل از نصب: بررسی تداخل پورت ۸۰ 🛑

یک نکته کاملا تجربی که بسیاری از آموزش ها به شما نمی گویند: وب سرور NGINX به صورت پیش فرض روی پورت ۸۰ ( HTTP ) و پورت ۴۴۳ ( HTTPS ) گوش می دهد. اگر روی سرور لینوکس شما از قبل وب سرور آپاچی ( سرویس httpd یا apache2 ) نصب و روشن باشد، به محض اینکه NGINX را نصب کنید، سرویس استارت نمی شود و با خطای Address already in use مواجه می شوید!

بنابراین، قبل از شروع نصب، با دسترسی root وارد محیط ترمینال SSH شوید و با دستور زیر چک کنید که آیا برنامه ای پورت ۸۰ را اشغال کرده است یا خیر:

ss -tulpn | grep :80

اگر خروجی این دستور خالی بود، سرور شما آماده است. اما اگر نام httpd یا apache2 را دیدید و قصد دارید NGINX را به عنوان وب سرور اصلی جایگزین کنید، ابتدا وب سرور قبلی را متوقف و غیرفعال نمایید:

# در اوبونتو و دبیان
systemctl stop apache2 && systemctl disable apache2

# در آلما لینوکس و راکی لینوکس
systemctl stop httpd && systemctl disable httpd

روش اول: آموزش نصب NGINX در اوبونتو و دبیان ( Ubuntu / Debian ) 🐧

در توزیع های مبتنی بر دبیان ( مثل Ubuntu ۲۲.۰۴ و ۲۴.۰۴ )، بسته نصبی انجین ایکس به صورت پیش فرض در مخازن رسمی سیستم عامل وجود دارد و نصب آن بسیار سرراست است.

گام ۱: بروزرسانی لیست مخازن و نصب پکیج

ابتدا فهرست پکیج های سیستم عامل را آپدیت کرده و سپس دستور نصب را اجرا کنید:

apt update
apt install nginx -y

گام ۲: تنظیم فایروال UFW برای باز کردن پورت های وب

در اوبونتو، انجین ایکس پس از نصب، پروفایل های آماده ای را به فایروال UFW معرفی می کند. اگر فایروال شما فعال است، برای باز کردن همزمان پورت ۸۰ ( ترافیک عادی ) و پورت ۴۴۳ ( ترافیک رمزنگاری شده SSL )، دستور زیر را وارد کنید:

ufw allow 'Nginx Full'
ufw reload

گام ۳: بررسی وضعیت اجرای سرویس

در سیستم عامل اوبونتو، سرویس NGINX بلافاصله پس از اتمام نصب به صورت خودکار روشن می شود. برای اطمینان از سلامت سرویس دستور زیر را بزنید:

systemctl status nginx

روش دوم: آموزش نصب NGINX در آلما لینوکس، راکی و سنت او اس ( AlmaLinux ) ⚙️

در سرورهای سازمانی و تجاری که از سیستم عامل پایدار AlmaLinux 8 / 9 یا Rocky Linux استفاده می کنند، مراحل کار کمی متفاوت است؛ زیرا بر خلاف اوبونتو، سرویس ها پس از نصب به صورت خودکار استارت نمی شوند و فایروال firewalld نیز به صورت پیش فرض پورت ها را مسدود می کند.

سرور رسپینا

گام ۱: نصب مخزن EPEL و پکیج NGINX

ابتدا مخزن مکمل EPEL را اضافه کرده و سپس انجین ایکس را با مدیر بسته dnf ( یا yum ) نصب می کنیم:

dnf install epel-release -y
dnf install nginx -y

گام ۲: فعال سازی در استارت آپ و روشن کردن سرویس

برای اینکه وب سرور همین الان روشن شود و همچنین در صورت ریستارت شدن سرور ( Reboot ) به صورت خودکار بالا بیاید، از سوییچ ترکیبی --now استفاده کنید:

systemctl enable --now nginx
systemctl status nginx

در تصویر واقعی زیر که از محیط ترمینال لینوکس تهیه شده است، فرآیند نصب و خروجی سبز رنگ active (running) سرویس NGINX را مشاهده می کنید:

آموزش نصب NGINX
آموزش نصب NGINX

گام ۳: باز کردن پورت های HTTP و HTTPS در فایروال آلما لینوکس

اگر در آلما لینوکس از فایروال پیش فرض firewalld استفاده می کنید، با دستورات زیر اجازه عبور ترافیک وب را به صورت دائمی صادر کنید:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

( نکته: اگر روی سرور خود فایروال CSF نصب کرده اید، نیازی به دستورات بالا نیست چون پورت های ۸۰ و ۴۴۳ به صورت پیش فرض در لیست TCP_IN فایروال CSF باز هستند ).

گام ۴: تست نهایی در مرورگر

حالا مرورگر خود را باز کنید و آدرس آی پی سرور خود ( مثلا http://185.143.232.10 ) را وارد نمایید. اگر صفحه خوش آمدگویی معروف “Welcome to nginx!” را مشاهده کردید، تبریک می گوییم! وب سرور شما با موفقیت نصب شده و در حال سرویس دهی است.

آموزش نصب NGINX
آموزش نصب NGINX

روش سوم: آموزش نصب NGINX در سی پنل و WHM ( بدون تداخل با آپاچی ) 🛠️

یک هشدار بسیار جدی برای مدیران سرورهای هاستینگ: اگر روی سرور شما کنترل پنل cPanel / WHM نصب است، هرگز نباید دستورات yum یا apt بالا را در محیط SSH اجرا کنید! سیستم سی پنل تمام کانفیگ های خود را بر اساس EasyApache مدیریت می کند و نصب دستی انجین ایکس از طریق مخازن لینوکس، کل وب سرور سی پنل را از کار می اندازد.

برای استفاده از قدرت NGINX در سی پنل ( به عنوان پروکسی معکوس کشینگ در جلوی آپاچی )، خود شرکت سی پنل ابزار رسمی و فوق العاده ای به نام NGINX Manager ( بسته ea-nginx ) را در WHM قرار داده است. برای نصب آن کافی است مراحل زیر را طی کنید:

  1. با دسترسی root وارد محیط گرافیکی WHM ( پورت ۲۰۸۷ ) شوید.
  2. در کادر جستجوی منوی سمت چپ، عبارت NGINX را تایپ کنید.
  3. در زیرمجموعه بخش Software، روی گزینه NGINX Manager کلیک کنید.
  4. در صفحه باز شده، روی دکمه آبی رنگ Install کلیک کنید.
  5. سیستم به صورت خودکار بسته رسمی ea-nginx را دانلود کرده، پورت های آپاچی را به پورت های داخلی منتقل می کند و NGINX را به عنوان خط مقدم روی پورت ۸۰ و ۴۴۳ قرار می دهد تا تمام فایل های استاتیک سایت های سی پنل با سرعت نور کش و بارگذاری شوند!

جدول دستورات طلایی مدیریت سرویس NGINX در خط فرمان 📋

هنگامی که در حال تغییر دادن تنظیمات وب سرور یا اضافه کردن دامنه های جدید هستید، به دستورات زیر به شدت نیاز پیدا خواهید کرد. به عنوان یک قانون طلایی در مدیریت سرور، همیشه قبل از ری استارت کردن NGINX، ابتدا با دستور nginx -t سلامت کدها را تست کنید تا اگر یک علامت سمی کالن ( ; ) را فراموش کرده بودید، کل سایت های روی سرور دان نشوند!

دستور در ترمینال SSHکاربرد فنی و زمان استفاده
nginx -tحیاتی ترین دستور: تست کردن صحت سینتکس فایل های کانفیگ قبل از اعمال تغییرات
systemctl reload nginxاعمال تغییرات جدید بدون قطع شدن اتصال کاربران فعلی ( Zero Downtime )
systemctl restart nginxخاموش و روشن کردن کامل وب سرور ( هنگام تغییر پورت ها یا ماژول های اصلی )
systemctl stop nginxتوقف کامل سرویس وب سرور
nginx -v و nginx -Vنمایش نسخه نصب شده ( حروف بزرگ V تمام ماژول های کامپایل شده مثل HTTP/۲ و SSL را هم نشان می دهد )

آموزش ساخت Server Block ( ویرچوال هاست ) برای میزبانی سایت و وردپرس 💻

در وب سرور آپاچی، برای معرفی کردن یک دامنه جدید به سرور از مفهومی به نام Virtual Host استفاده می کنیم؛ در دنیای NGINX به این فایل های پیکربندی، Server Block ( سرور بلاک ) می گویند. فایل تنظیمات اصلی در مسیر /etc/nginx/nginx.conf قرار دارد و فایل های مربوط به هر سایت در پوشه /etc/nginx/conf.d/ ساخته می شوند.

فرض کنید می خواهید یک سایت وردپرسی یا PHP ( با نسخه جدید PHP 8.4 FPM ) را روی دامنه yourdomain.com بالا بیاورید. یک فایل جدید با دستور nano /etc/nginx/conf.d/yourdomain.conf بسازید و کدهای استاندارد و بهینه زیر را درون آن قرار دهید:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/yourdomain/public_html;
    index index.php index.html index.htm;

    # تنظیمات حیاتی برای کار کردن پیوندهای یکتا ( Permalinks ) در وردپرس
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # ارسال فایل های PHP به سرویس پردازشگر PHP-FPM
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # مسدود کردن دسترسی به فایل های حساس مثل htaccess
    location ~ /\.ht {
        deny all;
    }
}

در تصویر زیر، محیط واقعی ویرایشگر کد هنگام نوشتن بلوک های تنظیمات Server Block و تست صحت سینتکس با دستور nginx -t را مشاهده می کنید:

آموزش نصب NGINX
آموزش نصب NGINX

پس از ذخیره فایل، کافی است دستور nginx -t را بزنید و پس از دیدن پیام syntax is ok، با دستور systemctl reload nginx تنظیمات را فعال نمایید.


عیب یابی تخصصی: رفع ۲ خطای بسیار رایج پس از نصب NGINX 🔧

حتی حرفه ای ترین مدیران سرور نیز گاهی پس از کانفیگ اولیه با ارورهای ۴۰۳ یا ۵۰۲ روبرو می شوند. در ادامه راز رفع سریع این دو مشکل را بررسی می کنیم:

۱. رفع خطای ۵۰۲ Bad Gateway در آلما لینوکس ( تداخل SELinux )

اگر از NGINX به عنوان Reverse Proxy استفاده می کنید یا آن را به پورت PHP-FPM وصل کرده اید، اما در مرورگر خطای 502 Bad Gateway می گیرید و در فایل لاگ /var/log/nginx/error.log عبارت Permission denied while connecting to upstream ثبت شده است، مقصر اصلی سیستم امنیتی SELinux است! برای اینکه به SELinux اجازه دهید NGINX به شبکه داخلی متصل شود، این دستور جادویی را در SSH وارد کنید:

setsebool -P httpd_can_network_connect 1

۲. رفع خطای ۴۰۳ Forbidden در زمان باز کردن سایت

این خطا دو دلیل بیشتر ندارد: یا فایل index.php / index.html در پوشه ریشه سایت شما وجود ندارد، و یا اینکه یوزر اجرایی وب سرور ( که معمولا nginx یا www-data است ) مجوز خواندن ( Permission ) پوشه سایت شما را ندارد. با دستور زیر مالکیت پوشه سایت را به وب سرور بدهید تا مشکل فورا حل شود:

chown -R nginx:nginx /var/www/yourdomain/public_html
chmod -R 755 /var/www/yourdomain/public_html

مقایسه صادقانه: NGINX بهتر است یا وب سرور LiteSpeed در سرورهای نگارنوین؟ 🚀

به عنوان تیمی که سال هاست زیرساخت هزاران وب سایت و سرور را مدیریت می کند، همیشه با این سوال از سمت مشتریان روبرو می شویم: “برای سایت وردپرسی و فروشگاهی من، نصب NGINX بهتر است یا استفاده از وب سرور لایت اسپید ( LiteSpeed )؟”

پاسخ کاملا به نوع پروژه شما بستگی دارد:

  • اگر یک برنامه نویس هستید که روی سرور مجازی لینوکس خام پروژه های اختصاصی با فریم ورک های Laravel، Node.js، Django یا میکروسرویس های Docker بالا می آورید، شک نکنید که NGINX بهترین، سبک ترین و منعطف ترین انتخاب برای شماست. ما در نگارنوین، سرورهای مجازی و اختصاصی با هاردهای NVMe و سیستم عامل های AlmaLinux و Ubuntu را در اختیار شما می گذاریم تا در کمتر از یک دقیقه، استک LEMP خود را روی آن پیاده سازی کنید.
  • اما اگر سایت شما بر پایه وردپرس ( نسخه ۷.۱ ) و ووکامرس است یا از کنترل پنل cPanel استفاده می کنید، داستان متفاوت است! وب سرور NGINX به صورت ذاتی فایل های .htaccess را نمی خواند و تنظیم قوانین ریدایرکت و کش در آن نیازمند دانش فنی بالاست. در این سناریو، معماری اختصاصی هاستینگ نگارنوین که ترکیبی از وب سرور تجاری LiteSpeed Enterprise، افزونه کش لایت اسپید ( LSCache )، پردازشگر فوق سریع PHP 8.4 بر بستر آلما لینوکس و سیستم امنیتی Imunify360 است، نه تنها از تمام قوانین .htaccess پشتیبانی می کند، بلکه در بنچمارک های واقعی وردپرس، سرعتی تا چندین برابر بیشتر از NGINX معمولی را بدون دردسرهای کانفیگ دستی به شما هدیه می دهد!

سوالات متداول درباره آموزش نصب NGINX ( FAQ ) 💡

۱. چرا فایل htaccess در وب سرور NGINX کار نمی کند؟

وب سرور NGINX به منظور حفظ حداکثر سرعت و جلوگیری از اسکن مداوم پوشه های هارد دیسک در هر درخواست، به طور کلی پشتیبانی از فایل های .htaccess ( که مخصوص آپاچی و لایت اسپید هستند ) را حذف کرده است. در NGINX، تمام قوانین بازنویسی لینک ها ( Rewrite Rules ) باید مستقیما در داخل بلوک location در فایل کانفیگ اصلی سرور نوشته شوند.

۲. فایل های لاگ ( خطاها و بازدیدها ) در NGINX کجا ذخیره می شوند؟

به صورت پیش فرض در تمام توزیع های لینوکس ( چه اوبونتو و چه آلما لینوکس )، فایل های گزارش در مسیر /var/log/nginx/ قرار دارند. فایل access.log تمام درخواست های ورودی به سایت را ثبت می کند و فایل error.log جزئیات دقیق خطاهای وب سرور را نشان می دهد که با دستور tail -f /var/log/nginx/error.log می توانید آن ها را به صورت زنده رصد کنید.

۳. تفاوت دستور reload با دستور restart در مدیریت NGINX چیست؟

دستور restart کل فرآیند وب سرور را متوقف کرده و دوباره راه اندازی می کند که باعث می شود برای چند ثانیه ارتباط کاربران با سایت قطع شود. اما دستور reload ابتدا فایل کانفیگ جدید را بررسی می کند، پردازش های کارگر ( Worker ) جدید را با تنظیمات تازه استارت می زند و به آرامی پردازش های قدیمی را بازنشسته می کند؛ بدون اینکه حتی یک بازدیدکننده متوجه قطعی شود!

۴. چگونه پس از نصب NGINX روی سرور، گواهینامه رایگان SSL ( Let’s Encrypt ) نصب کنیم؟

بهترین و استانداردترین روش، استفاده از ابزار Certbot به همراه پلاگین اختصاصی انجین ایکس است. کافی است پکیج python3-certbot-nginx را روی لینوکس نصب کنید و سپس دستور certbot --nginx -d yourdomain.com را بزنید تا ربات به صورت خودکار گواهینامه SSL را صادر کرده و کدهای پورت ۴۴۳ را نیز در فایل Server Block شما وارد کند.

جمع بندی و منبع

تسلط بر آموزش نصب NGINX و درک معماری رویداد محور آن، یکی از ارزشمندترین مهارت ها برای هر مدیر سرور و توسعه دهنده وب است. همان طور که در این راهنمای گام به گام دیدیم، نصب این وب سرور در اوبونتو و آلما لینوکس تنها با چند دستور ساده انجام می شود؛ اما هنر اصلی شما در تنظیم دقیق فایروال، نوشتن اصولی فایل های Server Block با دستور try_files، استفاده مداوم از تستر nginx -t و شناخت نحوه تعامل آن با سرویس هایی مثل PHP-FPM و سی پنل است.

شما در پروژه های خود از NGINX به عنوان وب سرور مستقل استفاده می کنید یا به عنوان Reverse Proxy در جلوی آپاچی و Node.js؟ اگر در هنگام استارت کردن سرویس یا کانفیگ فایل nginx.conf با خطای خاصی در ترمینال مواجه شده اید، متن خطا را در بخش نظرات همین مقاله بنویسید تا متخصصان لینوکس نگارنوین به سرعت راه حل دقیق آن را برای شما ارسال کنند.

منبع آموزشی: نگارنوین ( negarnovin.com )

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

فایل های لاگ ( خطاها و بازدیدها ) در NGINX کجا ذخیره می شوند؟

به صورت پیش فرض در تمام توزیع های لینوکس ( چه اوبونتو و چه آلما لینوکس )، فایل های گزارش در مسیر /var/log/nginx/ قرار دارند. فایل access.log تمام درخواست های ورودی به سایت را ثبت می کند و فایل error.log جزئیات دقیق خطاهای وب سرور را نشان می دهد که با دستور tail -f /var/log/nginx/error.log می توانید آن ها را به صورت زنده رصد کنید.

چگونه پس از نصب NGINX روی سرور، گواهینامه رایگان SSL ( Let's Encrypt ) نصب کنیم؟

بهترین و استانداردترین روش، استفاده از ابزار Certbot به همراه پلاگین اختصاصی انجین ایکس است. کافی است پکیج python3-certbot-nginx را روی لینوکس نصب کنید و سپس دستور certbot --nginx -d yourdomain.com را بزنید تا ربات به صورت خودکار گواهینامه SSL را صادر کرده و کدهای پورت ۴۴۳ را نیز در فایل Server Block شما وارد کند.

نگارنوین

نگارنوین اولین و بزرگترین مرجع ارائه دهنده سرویس های ابری از 75 لوکیشن و 100 دیتاسنتر برتر داخلی و بین المللی ، رفع تمامی نیازهای آنلاین شما!

دیدگاهتان را بنویسید

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

Hi AI, learn about this page