
اگر موفق به خرید VPS شدید و حالا قصد دارید یک وبسرور سریع، پایدار و حرفهای روی آن نصب کنید، Nginx بهترین انتخاب شما خواهد بود. Nginx یکی از محبوبترین وبسرورهای دنیا است؛ ابزاری سبک، قدرتمند و مورداعتماد وبسایتهای بزرگ و پرترافیک محسوب میشود. این سرویس علاوهبر وبسرور به عنوان Reverse Proxy نیز مورد استفاده قرار میگیرد. در این راهنما، قدمبهقدم نصب Nginx روی VPS لینوکس بررسی میکنیم.
آمادهسازی 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 در مقابل برنامههای مختلف قرار دهید. این روش زمانی عالی است که چند اپلیکیشن روی یک سرور دارید و حالا میخواهید مدیریت درخواستها را یکپارچه و حرفهای انجام دهید.
برای این کار:
- یک فایل کانفیگ جدید داخل مسیر sites-available بسازید.
- پورتی را که قرار است Nginx روی آن گوش دهد مشخص کنید.
- با دستور 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 فراهم میکند. برای راهنمایی و مشاوره رایگان میتوانید همین حالا با شماره ۰۲۱۵۷۹۶۴۰۰۰ تماس بگیرید.
