سرور

نصب Nginx روی VPS و افزایش عملکرد سایت مخصوص مبتدی‌ها

راهنمای دقیق و جامع نصب Nginx روی VPS

اگر موفق به خرید VPS شدید و حالا قصد دارید یک وب‌سرور سریع، پایدار و حرفه‌ای روی آن نصب کنید، Nginx بهترین انتخاب شما خواهد بود. Nginx یکی از محبوب‌ترین وب‌سرورهای دنیا است؛ ابزاری سبک، قدرتمند و مورداعتماد وب‌سایت‌های بزرگ و پرترافیک محسوب می‌شود. این سرویس علاوه‌بر وب‌سرور به عنوان Reverse Proxy نیز مورد استفاده قرار می‌گیرد. در این راهنما، قدم‌به‌قدم نصب Nginx روی VPS لینوکس بررسی می‌کنیم. 

آماده‌سازی VPS قبل از نصب Nginx

آماده‌سازی VPS قبل از نصب Nginx

قبل از شروع، لازم است یک کاربر غیر‌ریشه (non-root) با دسترسی sudo روی سرور خود ایجاد کرده باشید. همچنین بهتر است یک دامنه از قبل تعریف کرده باشید. در این زمینه می‌توانید به آموزش کامل نحوه خرید دامنه ir مراجعه کنید. 

مرحله اول: نصب Nginx

از آن‌جایی که Nginx در مخازن پیش‌فرض اوبونتو وجود دارد، نصب آن بسیار ساده است. فقط کافی است از سیستم مدیریت پکیج apt استفاده کنیم. ابتدا لیست پکیج‌های موجود را آپدیت کنیم تا آخرین نسخه‌ها در دسترس باشند:

sudo apt update

حالا می‌توانیم Nginx را نصب کنیم:

sudo apt install nginx

بعد از تایید نصب، اوبونتو به‌صورت خودکار Nginx و وابستگی‌های لازم را روی سرورتان نصب می‌کند. 

گام دوم: تنظیم فایروال برای اجرای Nginx

قبل از اینکه Nginx را تست کنیم، باید تنظیمات فایروال را طوری تغییر دهیم که امکان دسترسی به این سرویس را داشته باشیم. خوشبختانه Nginx بعد از نصب، خودش را به عنوان یک سرویس در ufw ثبت می‌کند و همین کار شما را راحت‌تر می‌سازد. برای مشاهده لیست سرویس‌هایی که ufw می‌تواند با آن‌ها کار کند، کافی‌است دستور زیر را اجرا کنید:

sudo ufw app list

خروجی به شکل زیر خواهد بود:

Available applications:

  Nginx Full

  Nginx HTTP

  Nginx HTTPS

  OpenSSH

همان‌طور که می‌بینید، سه پروفایل مختلف برای Nginx وجود دارد:

  • Nginx Full: باز کردن پورت‌های ۸۰ و ۴۴۳ (HTTP و HTTPS)
  • Nginx HTTP: فقط باز کردن پورت ۸۰ (HTTP)
  • Nginx HTTPS: فقط باز کردن پورت ۴۴۳ (HTTPS)

طبق بهترین اصول امنیتی، همیشه باید کمترین دسترسی لازم را باز کنید. در این مرحله فقط به پورت ۸۰ نیاز داریم، پس کافی است دستور زیر را اجرا کنید:

sudo ufw allow ‘Nginx HTTP’

برای بررسی وضعیت، دستور زیر را وارد کنید:

sudo ufw status

اگر همه‌چیز درست انجام شده باشد، باید چیزی شبیه به خروجی زیر ببینید:

Status: active

To                         Action      From

—                         ——      —-

OpenSSH                    ALLOW       Anywhere                  

Nginx HTTP                 ALLOW       Anywhere                  

OpenSSH (v6)               ALLOW       Anywhere (v6)             

Nginx HTTP (v6)            ALLOW       Anywhere (v6)

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

بعد از نصب، Nginx به‌صورت خودکار اجرا می‌شود. برای اینکه مطمئن شوید سرویس در حال اجراست، دستور زیر را وارد کنید:

systemctl status nginx

اگر Nginx اجرا شده باشد، باید خروجی مشابه زیر ببینید:

 nginx.service – A high performance web server and a reverse proxy server

   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

   Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago

     Docs: man:nginx(8)

 Main PID: 2369 (nginx)

    Tasks: 2 (limit: 1153)

   Memory: 3.5M

   CGroup: /system.slice/nginx.service

           ├─۲۳۶۹ nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

           └─۲۳۸۰ nginx: worker process

بهترین راه برای اطمینان، تست کردن صفحه پیش‌فرض Nginx است. اگر IP سرورتان را نمی‌دانید، این دستور آن را برایتان نمایش می‌دهد:

curl -4 icanhazip.com

حالا مرورگرتان را باز کنید و آدرس زیر را وارد کنید:

http://your_server_ip

اگر صفحه پیش‌فرض Nginx نمایش داده شد، یعنی وب‌سرور شما آماده است.

گام چهارم: مدیریت سرویس Nginx

حالا که سرورتان روشن و فعال است، با چند دستور مهم مدیریتی آشنا شوید:

دستورکاربرد
sudo systemctl stop nginxتوقف سرویس
sudo systemctl start nginxاجرای سرویس
sudo systemctl restart nginxراه‌اندازی مجدد
sudo systemctl reload nginxبارگذاری تنظیمات بدون قطع سرویس
sudo systemctl disable nginxعدم اجرای خودکار
sudo systemctl enable nginxفعال‌سازی اجرای خودکار

مرحله ۵: راه‌اندازی Server Block در Nginx (مرحله پیشنهادی)

Server Block شبیه Virtual Host در Apache است و به شما امکان می‌دهد با خرید VPS ارزان چند سایت را روی یک سرور مجازی میزبانی کنید. به‌صورت پیش‌فرض، اوبونتو یک Server Block فعال دارد که محتوای خود را از مسیر /var/www/html ارائه می‌دهد. این گزینه برای یک سایت کافی است، اما زمانی که تعداد سایت‌ها زیاد شود، مدیریت آن سخت خواهد شد؛ پس بهتر است برای هر دامنه یک ساختار اختصاصی بسازیم و مسیر پیش‌فرض را برای مواقعی که هیچ بلاکی مطابق دامنه کاربر نبود، دست‌نخورده باقی بگذاریم.

۱. ساخت مسیر اختصاصی دامنه

ابتدا مسیر اختصاصی سایتتان را ایجاد کنید:

sudo mkdir -p /var/www/your_domain/html

سپس مالکیت پوشه را به کاربر فعلی تغییر دهید:

sudo chown -R $USER:$USER /var/www/your_domain/html

برای اطمینان از سطح دسترسی درست (خواندن/نوشتن برای مالک و فقط خواندن/اجرا برای بقیه)، دستور زیر را اجرا کنید:

sudo chmod -R 755 /var/www/your_domain

۲. ساخت صفحه index اصلی

در این بخش، یک فایل HTML آزمایشی می‌سازیم:

sudo nano /var/www/your_domain/html/index.html

اکنون متن زیر را داخل آن قرار دهید و فایل را ذخیره کرده و از آن خارج شوید:

<html>

    <head>

        <title>Welcome to your_domain!</title>

    </head>

    <body>

        <h1>Success! The your_domain server block is working!</h1>

    </body>

</html>

۳. ایجاد Server Block اختصاصی دامنه

اکنون باید یک بلاک جدید برای دامنه بسازیم تا Nginx بفهمد فایل‌های سایت را از کجا لود کند. برای این منظور، فایل تنظیمات را باز کنید:

sudo nano /etc/nginx/sites-available/your_domain

دستور زیر را داخل آن قرار دهید:

server {

        listen 80;

        listen [::]:80;

        root /var/www/your_domain/html;

        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {

                try_files $uri $uri/ =404;

        }

}

در اینجا مسیر root و server_name را مطابق دامنه‌ات تنظیم کردیم.

۴. فعال‌سازی Server Block

برای فعال کردن بلاک جدید، کافی است لینک سمبلیک به پوشه sites-enabled بسازید:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

۵. جلوگیری از خطای حافظه Hash Bucket

برای اینکه با خطاهای مربوط به server_name مواجه نشوید، باید مقدار کوچکی را در پیکربندی اصلی Nginx فعال کنیم. برای انجام این کار فایل اصلی را باز کنید.

sudo nano /etc/nginx/nginx.conf

عبارت زیر را پیدا کرده و علامت # ابتدای آن را حذف کنید.

server_names_hash_bucket_size 64;

این تغییر از خطاهای احتمالی زمان استفاده از چندین دامنه جلوگیری می‌کند.

۶. تست و راه‌اندازی مجدد Nginx

حالا تنظیمات نهایی را تکمیل کرده و وب‌سرور را ری‌استارت کنید.

sudo nginx -t

sudo systemctl restart nginx

فایل‌ها و دایرکتوری‌های مهم Nginx در یک نگاه

مسیر یا فایلتوضیح
/var/www/htmlمحل قرارگیری محتوای واقعی سایت. به‌صورت پیش‌فرض صفحه‌ی اولیه Nginx در این مسیر است.
/etc/nginxدایرکتوری اصلی شامل تمام فایل‌های پیکربندی Nginx.
/etc/nginx/nginx.confفایل تنظیمات اصلی Nginx؛ مناسب برای ویرایش تنظیمات کلی سرور.
/etc/nginx/sites-available/محل نگهداری فایل‌های پیکربندی سایت‌ها (Server Block). Nginx تا زمانی که این فایل‌ها لینک نشوند از آن‌ها استفاده نمی‌کند.
/etc/nginx/sites-enabled/شامل فایل‌های فعال شده‌ی سایت‌ها. معمولاً از مسیر sites-available به اینجا لینک می‌شوند.
/etc/nginx/snippets/شامل اسنیپت‌ها و تکه‌کدهای قابل استفاده‌ی مجدد در کانفیگ Nginx.
/var/log/nginx/access.logمحل ثبت تمام درخواست‌های ورودی به سرور.
/var/log/nginx/error.logمحل ثبت خطاها و هشدارهای مربوط به Nginx.

بهینه‌سازی عملکرد سرورها در ترافیک بالا

در این بخش سراغ تکنیک‌های پیشرفته‌ در بهبود عملکرد VPS پرسرعت برای سایت وردپرس می‌رویم که به شما کمک می‌کنند عملکرد Nginx را در وب‌سایت‌های پرترافیک به بالاترین سطح برسانید. روش‌هایی مانند لود بالانسینگ، کشینگ و تنظیمات تخصصی سرور. 

لود بالانسینگ: تقسیم هوشمندانه بار روی چند سرور

لود بالانسینگ به معنای توزیع درخواست‌های ورودی بین چند سرور مختلف است تا هیچ سروری تحت فشار بیش از حد قرار نگیرد. برای انجام این کار می‌توانید از HAProxy یا حتی خود Nginx به عنوان لود بالانسر استفاده کنید.

کشینگ (Caching): سرعت بیشتر با منابع کمتر

کشینگ به معنای ذخیره داده‌های پربازدید در یک لایه سریع‌تر است تا در هر درخواست مجبور نباشیم اطلاعات را دوباره از منبع اصلی بخوانیم. برای پیاده‌سازی کافی است:

  • از Redis یا Memcached به عنوان لایه کش استفاده کنید.
  • Nginx را طوری تنظیم کنید که برای فایل‌ها و داده‌های تکراری، مستقیم از کش پاسخ دهد.

تنظیمات پیشرفته Nginx: ریزتنظیم‌هایی برای حداکثر کارایی

گاهی فقط با چند تغییر کوچک در تنظیمات Nginx می‌توانید جهش بزرگی در عملکرد ایجاد کنید. از جمله:

  • افزایش تعداد worker processها
  • تنظیم دقیق buffer sizeها
    تغییر timeout‌ها متناسب با میزان ترافیک و نوع درخواست‌ها

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

استفاده از Nginx به عنوان Reverse Proxy 

یکی از کاربردهای مهم Nginx این است که بتوانید آن را به عنوان Reverse Proxy در مقابل برنامه‌های مختلف قرار دهید. این روش زمانی عالی است که چند اپلیکیشن روی یک سرور دارید و حالا می‌خواهید مدیریت درخواست‌ها را یکپارچه و حرفه‌ای انجام دهید.

برای این کار:

  1. یک فایل کانفیگ جدید داخل مسیر sites-available بسازید.
  2. پورتی را که قرار است Nginx روی آن گوش دهد مشخص کنید.
  3. با دستور proxy_pass درخواست‌ها را به اپلیکیشن مقصد هدایت کنید.

نمونه کانفیگ برای Node.js روی پورت ۳۰۰۰

/etc/nginx/sites-available/nodejs

server {

    listen 80;

    server_name your_domain;

    location / {

        proxy_pass http://localhost:3000;

    }

}

با این کار، کاربران وب‌سایت شما فقط پورت ۸۰ را می‌بینند اما پشت‌صحنه، ترافیک به اپلیکیشن Node.js ارسال می‌شود.

رفع خطاهای رایج Nginx

کار با Nginx مثل رانندگی با یک ماشین قوی است؛ تا زمانی که همه‌چیز درست کار می‌کند، عالی است. به محض اینکه خطایی ظاهر شود، ممکن است سردرگم شوید. در این بخش، رایج‌ترین خطاهای Nginx، دلیل وقوع آنها و روش رفع سریع‌شان را بررسی می‌کنیم.

خطای ۴۰۳ Forbidden

این خطا یعنی Nginx اجازه دسترسی به فایل یا پوشه موردنظر شما را ندارد. مشکل معمولا یکی از این دو مورد است:

  • سطح دسترسی فایل‌ها و فولدرها درست نیست
  • کاربر Nginx اجازه خواندن محتوا را ندارد

راه‌حل: کافی است مالکیت مسیر وب‌سایت را به کاربر Nginx بدهید:

sudo chown -R www-data:www-data /var/www/html

 

خطای ۵۰۲ Bad Gateway

این خطا زمانی رخ می‌دهد که Nginx به عنوان reverse proxy کار می‌کند، اما سرور پشت‌صحنه (مثلا PHP-FPM یا Node.js) درست پاسخ نمی‌دهد. معمول‌ترین دلایل:

  • سرویس بک‌اند خاموش است
  • پورت اشتباه تنظیم شده است
  • تنظیمات proxy_pass ایراد دارد

راه‌حل:

  • مطمئن شوید سرویس بک‌اند در حال اجراست.
  • پیکربندی Nginx را چک کنید؛ پورت proxy_pass باید دقیقا با پورت سرویس مقصد یکی باشد.

خطای ۵۰۴ Gateway Timeout

وقتی پاسخ‌دهی سرور بک‌اند خیلی طولانی شود، Nginx Timeout می‌دهد. این مسئله معمولا به دلایل زیر رخ می‌دهد:

  • کند بودن بک‌اند
  • کم بودن مقدار Timeout در تنظیمات Nginx

راه‌حل: مقادیر Timeout را افزایش دهید. برای مثال در بلاک server اضافه کنید:

proxy_connect_timeout 300;

proxy_send_timeout 300;

proxy_read_timeout 300;

 

جمع‌بندی: نصب Nginx روی VPS را به کارشناسان ایران هاست بسپارید

اگر قصد دارید سایت‌تان سریع‌تر، امن‌تر و حرفه‌ای‌تر کار کند، Nginx بهترین انتخاب برای VPS است. در این مقاله بررسی کردیم چطور Nginx را روی سرور مجازی نصب و پیکربندی کنیم. حالا نوبت زیرساخت پایدار است. برای تضمین عملکرد حداکثری Nginx و پایداری سایتتان، توصیه می‌کنیم از خدمات تخصصی ایران هاست استفاده کنید. 

چه دنبال خرید VPS پرسرعت برای وردپرس باشید، چه قصد ثبت دامنه امن و مطمئن دارید یا حتی به فکر انتخاب VPS ایرانی یا خارجی متناسب با کسب‌وکارتان هستید، ایران هاست با ارائه سرورهای قدرتمند و پشتیبانی متخصص، بهترین بستر را برای میزبانی وب‌سایت‌های پرترافیک و بهینه‌سازی شده با Nginx فراهم می‌کند. برای راهنمایی و مشاوره رایگان می‌توانید همین حالا با شماره ۰۲۱۵۷۹۶۴۰۰۰ تماس بگیرید. 

سوالات متداول نصب Nginx روی VPS

سایت شرکتی یا بلاگ: 1GB وردپرس با ترافیک متوسط: 2GB فروشگاهی یا پرترافیک:4GB به بالا
اگر سرعت داخلی، پینگ پایین و قیمت مناسب می‌خواهید VPS ایرانی مناسب است. درصورتی‌که کاربر بین‌المللی دارید یا سایت چندزبانه دارید VPS خارجی را انتخاب کنید.
با اقداماتی مانند موارد زیر می‌توانید امنیت سرور مجازی خود را بالا ببرید. تغییر پورت SSH نصب Fail2ban فعال‌سازی SSL آپدیت منظم سیستم فعال‌سازی فایروال UFW
بله. برای سایت‌های پرترافیک یا سایت‌هایی با مصرف RAM کمتر و کاربرانی که به سرعت بیشتر برای فایل‌های استاتیک نیاز دارند، Nginx مناسب‌تر است.
نمایش بیشتر
دکمه بازگشت به بالا