در دنیای امروز، راهاندازی یک سرور وب کارآمد و سریع یکی از نیازهای اساسی برای توسعهدهندگان و مدیران سیستمها است. Nginx، به عنوان یکی از محبوبترین سرورهای وب، به دلیل عملکرد بالا، مصرف منابع کم و انعطافپذیری گسترده، جایگاه ویژهای در این زمینه پیدا کرده است. این مقاله به شما کمک میکند تا به راحتی Nginx را روی سیستمعامل لینوکس نصب و پیکربندی کنید و یک سرور وب قدرتمند راهاندازی نمایید.
Nginx نه تنها به عنوان یک سرور وب، بلکه به عنوان یک پروکسی معکوس، بالانس بار و حتی سرور ایمیل نیز استفاده میشود. این سرور وب به دلیل معماری سبک و کارآمد خود، قادر است هزاران اتصال همزمان را با مصرف حداقلی از منابع مدیریت کند. این ویژگیها باعث شده است که Nginx به یکی از گزینههای اصلی برای میزبانی وبسایتهای پرترافیک تبدیل شود.
هدف این مقاله این است که شما را با مراحل نصب، پیکربندی و بهینهسازی Nginx روی سیستمعامل لینوکس آشنا کند. در پایان این مقاله، شما قادر خواهید بود یک سرور وب پایدار و ایمن با استفاده از Nginx راهاندازی کنید.
برای دنبال کردن این آموزش، نیاز است که با مفاهیم پایهای لینوکس آشنا باشید و دسترسی به یک سرور لینوکس داشته باشید. همچنین، اطمینان حاصل کنید که دسترسی root یا دسترسی sudo به سرور دارید تا بتوانید تغییرات لازم را اعمال کنید.
در بخش بعدی، به معرفی بیشتر Nginx و مزایای استفاده از آن خواهیم پرداخت.
آشنایی با Nginx
Nginx (تلفظ: “Engine-X”) یک سرور وب با عملکرد بالا و منبع باز است که در سال 2004 توسط ایگور سیسویف توسعه داده شد. این سرور وب به سرعت به دلیل تواناییهای منحصر به فرد خود در مدیریت ترافیک سنگین و مصرف کم منابع، محبوبیت زیادی در بین توسعهدهندگان و مدیران سیستمها پیدا کرد. امروزه، Nginx نه تنها به عنوان یک سرور وب، بلکه به عنوان یک پروکسی معکوس، بالانس بار و حتی سرور ایمیل نیز استفاده میشود.
تاریخچه Nginx
Nginx در ابتدا برای حل مشکل C10K (مدیریت 10,000 اتصال همزمان) طراحی شد. این مشکل به دلیل افزایش تقاضا برای وبسایتهای پرترافیک و نیاز به سرورهای وب کارآمدتر به وجود آمد. Nginx با استفاده از یک معماری رویدادمحور (Event-Driven) و غیرمسدودکننده (Non-Blocking)، توانست این مشکل را به طور موثر حل کند. از آن زمان، Nginx به یکی از محبوبترین سرورهای وب در جهان تبدیل شده است.
مزایای استفاده از Nginx
استفاده از Nginx مزایای متعددی دارد که آن را از سایر سرورهای وب مانند Apache متمایز میکند. برخی از این مزایا عبارتند از:
- سرعت و کارایی بالا: Nginx قادر است هزاران اتصال همزمان را با مصرف حداقلی از منابع مدیریت کند.
- مصرف کم منابع: به دلیل معماری سبک و کارآمد، Nginx منابع سیستم را بهینهتر مصرف میکند.
- انعطافپذیری: Nginx از ماژولهای مختلفی پشتیبانی میکند که به شما امکان میدهد عملکرد آن را به راحتی گسترش دهید.
- پشتیبانی از پروکسی معکوس و بالانس بار: Nginx به عنوان یک پروکسی معکوس و بالانس بار نیز استفاده میشود که این ویژگی آن را برای استفاده در محیطهای پیچیده ایدهآل میکند.
- امنیت بالا: Nginx به طور پیشفرض دارای تنظیمات امنیتی قوی است و به راحتی میتوان آن را برای افزایش امنیت بیشتر پیکربندی کرد.
کاربردهای Nginx
Nginx کاربردهای متنوعی دارد که برخی از مهمترین آنها عبارتند از:
- سرور وب: Nginx به عنوان یک سرور وب برای میزبانی وبسایتها و برنامههای وب استفاده میشود.
- پروکسی معکوس: Nginx میتواند به عنوان یک پروکسی معکوس برای توزیع ترافیک بین سرورهای مختلف استفاده شود.
- بالانس بار: Nginx قادر است ترافیک ورودی را بین چندین سرور توزیع کند تا بار روی سرورها به طور مساوی تقسیم شود.
- فشردهسازی و کش: Nginx از فشردهسازی محتوا و کشسازی پویا پشتیبانی میکند که این ویژگی باعث بهبود عملکرد و کاهش زمان بارگذاری صفحات وب میشود.
در بخش بعدی، به مراحل نصب Nginx روی سیستمعامل لینوکس خواهیم پرداخت.
نصب Nginx روی لینوکس
نصب Nginx روی سیستمعامل لینوکس یک فرآیند ساده و مستقیم است. با این حال، مراحل نصب ممکن است بسته به توزیع لینوکس شما کمی متفاوت باشد. در این بخش، مراحل نصب Nginx روی توزیعهای محبوب لینوکس مانند Ubuntu، CentOS و Debian را به شما آموزش میدهیم.
1. بهروزرسانی سیستم
قبل از نصب Nginx، بهتر است سیستم خود را بهروزرسانی کنید تا از آخرین بهروزرسانیها و وصلههای امنیتی اطمینان حاصل کنید. برای این کار، دستورات زیر را در ترمینال اجرا کنید:
- Ubuntu/Debian:
sudo apt update sudo apt upgrade
- CentOS:
sudo yum update
2. نصب Nginx
پس از بهروزرسانی سیستم، میتوانید Nginx را نصب کنید. دستورات نصب برای توزیعهای مختلف به شرح زیر است:
- Ubuntu/Debian:
sudo apt install nginx
- CentOS:
ابتدا باید مخزن EPEL (Extra Packages for Enterprise Linux) را فعال کنید:sudo yum install epel-release
سپس Nginx را نصب کنید:
sudo yum install nginx
3. بررسی نصب موفق
پس از اتمام نصب، میتوانید وضعیت سرویس Nginx را بررسی کنید تا مطمئن شوید که به درستی نصب شده است.
- Ubuntu/Debian/CentOS:
sudo 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 ...
4. شروع سرویس Nginx
اگر Nginx به طور خودکار شروع نشده است، میتوانید آن را به صورت دستی شروع کنید:
- Ubuntu/Debian/CentOS:
sudo systemctl start nginx
برای اطمینان از اینکه Nginx پس از هر راهاندازی مجدد سیستم به طور خودکار شروع شود، دستور زیر را اجرا کنید:
- Ubuntu/Debian/CentOS:
sudo systemctl enable nginx
5. تست Nginx
برای اطمینان از اینکه Nginx به درستی کار میکند، مرورگر خود را باز کرده و آدرس IP سرور خود را وارد کنید. اگر همه چیز به درستی پیکربندی شده باشد، باید صفحه خوشآمدگویی Nginx را مشاهده کنید.
اگر آدرس IP سرور خود را نمیدانید، میتوانید از دستور زیر استفاده کنید:
- Ubuntu/Debian/CentOS:
curl ifconfig.me
یا اگر سرور شما دارای رابط گرافیکی است، میتوانید از مرورگر روی سرور استفاده کنید و localhost
یا 127.0.0.1
را وارد کنید.
در بخش بعدی، به پیکربندی اولیه Nginx و تنظیمات مهم آن خواهیم پرداخت.
پیکربندی Nginx
پس از نصب موفقیتآمیز Nginx، مرحله بعدی پیکربندی آن است. Nginx از فایلهای پیکربندی برای تعیین نحوه رفتار سرور استفاده میکند. در این بخش، به بررسی ساختار فایلهای پیکربندی Nginx و نحوه انجام تنظیمات اولیه میپردازیم.
1. ساختار فایلهای پیکربندی Nginx
فایلهای پیکربندی Nginx معمولاً در مسیر /etc/nginx/
قرار دارند. ساختار اصلی این فایلها به شرح زیر است:
- nginx.conf: فایل پیکربندی اصلی Nginx که شامل تنظیمات کلی سرور است.
- sites-available/: این دایرکتوری شامل فایلهای پیکربندی برای سایتهای مختلف است که میتوانند روی سرور میزبانی شوند.
- sites-enabled/: این دایرکتوری شامل لینکهای نمادین به فایلهای پیکربندی در
sites-available/
است که فعال شدهاند. - conf.d/: این دایرکتوری میتواند شامل فایلهای پیکربندی اضافی باشد که به صورت خودکار توسط Nginx بارگیری میشوند.
2. پیکربندی اولیه Nginx
برای شروع، فایل پیکربندی اصلی Nginx را باز کنید:
sudo nano /etc/nginx/nginx.conf
در این فایل، شما میتوانید تنظیمات کلی مانند تعداد worker processes، محدودیتهای اتصال و سایر پارامترهای عملکردی را تنظیم کنید. به عنوان مثال:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
3. پیکربندی Virtual Hosts
برای میزبانی چندین سایت روی یک سرور، میتوانید از Virtual Hosts استفاده کنید. به عنوان مثال، برای ایجاد یک Virtual Host جدید، مراحل زیر را دنبال کنید:
- یک فایل پیکربندی جدید در
sites-available/
ایجاد کنید:sudo nano /etc/nginx/sites-available/example.com
- محتوای زیر را به فایل اضافه کنید:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html; location / { try_files $uri $uri/ =404; } }
- یک لینک نمادین از فایل پیکربندی در
sites-available/
بهsites-enabled/
ایجاد کنید:sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
- پیکربندی Nginx را تست کنید تا مطمئن شوید خطایی وجود ندارد:
sudo nginx -t
- در صورت موفقیتآمیز بودن تست، سرویس Nginx را مجدداً راهاندازی کنید:
sudo systemctl reload nginx
4. تنظیمات امنیتی
برای افزایش امنیت Nginx، میتوانید از تنظیمات زیر استفاده کنید:
- محدود کردن دسترسی: میتوانید دسترسی به بخشهای خاصی از سایت را محدود کنید. به عنوان مثال:
location /admin { allow 192.168.1.0/24; deny all; }
- استفاده از SSL: برای رمزگذاری ترافیک، میتوانید از گواهی SSL استفاده کنید. به عنوان مثال:
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/ssl/certs/example.com.crt; ssl_certificate_key /etc/ssl/private/example.com.key; root /var/www/example.com; index index.html; }
- فشردهسازی Gzip: برای بهبود عملکرد، میتوانید فشردهسازی Gzip را فعال کنید:
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
در بخش بعدی، به مدیریت و نگهداری Nginx خواهیم پرداخت.
مدیریت و نگهداری Nginx
پس از نصب و پیکربندی Nginx، مدیریت و نگهداری آن به منظور اطمینان از عملکرد بهینه و پایدار سرور بسیار مهم است. در این بخش، به بررسی دستورات و روشهای مدیریتی Nginx میپردازیم که به شما کمک میکند تا سرور خود را به طور موثر مدیریت کنید.
1. شروع، توقف و راهاندازی مجدد Nginx
مدیریت سرویس Nginx از طریق دستورات systemctl
انجام میشود. در ادامه، دستورات اصلی برای مدیریت سرویس Nginx آورده شده است:
- شروع سرویس Nginx:
sudo systemctl start nginx
- توقف سرویس Nginx:
sudo systemctl stop nginx
- راهاندازی مجدد سرویس Nginx:
sudo systemctl restart nginx
- بارگذاری مجدد تنظیمات Nginx (بدون قطع کامل سرویس):
sudo systemctl reload nginx
- بررسی وضعیت سرویس Nginx:
sudo systemctl status nginx
2. بررسی و مدیریت لاگها
Nginx به طور پیشفرض لاگهای دسترسی (Access Logs) و خطاها (Error Logs) را در مسیر /var/log/nginx/
ذخیره میکند. این لاگها برای عیبیابی و نظارت بر عملکرد سرور بسیار مفید هستند.
- دسترسی به لاگهای دسترسی:
sudo tail -f /var/log/nginx/access.log
- دسترسی به لاگهای خطا:
sudo tail -f /var/log/nginx/error.log
برای مدیریت حجم لاگها، میتوانید از ابزار logrotate
استفاده کنید. این ابزار به طور خودکار لاگها را چرخش داده و فایلهای قدیمی را فشرده یا حذف میکند.
3. بهروزرسانی Nginx
برای اطمینان از امنیت و عملکرد بهینه، مهم است که Nginx را به آخرین نسخه بهروزرسانی کنید. مراحل بهروزرسانی بسته به توزیع لینوکس شما متفاوت است:
- Ubuntu/Debian:
sudo apt update sudo apt upgrade nginx
- CentOS:
sudo yum update nginx
پس از بهروزرسانی، بهتر است سرویس Nginx را مجدداً راهاندازی کنید تا تغییرات اعمال شوند:
sudo systemctl restart nginx
4. پشتیبانگیری از فایلهای پیکربندی
پیش از اعمال هرگونه تغییر در فایلهای پیکربندی Nginx، بهتر است از آنها پشتیبان بگیرید. این کار به شما امکان میدهد در صورت بروز مشکل، به سرعت به تنظیمات قبلی بازگردید.
- پشتیبانگیری از فایلهای پیکربندی:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup sudo cp -r /etc/nginx/sites-available /etc/nginx/sites-available.backup sudo cp -r /etc/nginx/sites-enabled /etc/nginx/sites-enabled.backup
- بازگرداندن پشتیبان:
sudo cp /etc/nginx/nginx.conf.backup /etc/nginx/nginx.conf sudo cp -r /etc/nginx/sites-available.backup /etc/nginx/sites-available sudo cp -r /etc/nginx/sites-enabled.backup /etc/nginx/sites-enabled
5. نظارت بر عملکرد Nginx
برای نظارت بر عملکرد Nginx و اطمینان از سلامت سرور، میتوانید از ابزارهایی مانند htop
، nginx-status
و یا ابزارهای مانیتورینگ خارجی مانند Prometheus و Grafana استفاده کنید.
- نصب htop:
sudo apt install htop # برای Ubuntu/Debian sudo yum install htop # برای CentOS
- استفاده از htop:
htop
در بخش بعدی، به بهینهسازی عملکرد Nginx خواهیم پرداخت.
بهینهسازی عملکرد Nginx
بهینهسازی عملکرد Nginx یکی از مراحل مهم در راهاندازی یک سرور وب کارآمد است. با اعمال تنظیمات مناسب، میتوانید سرعت پاسخگویی سرور را افزایش داده و مصرف منابع را بهینهسازی کنید. در این بخش، به برخی از روشهای کلیدی برای بهینهسازی Nginx میپردازیم.
1. تنظیمات Worker Processes و Connections
Nginx از یک معماری چند پردازهای (Multi-Process) استفاده میکند که به آن اجازه میدهد تا ترافیک را به طور موثر مدیریت کند. برای بهینهسازی عملکرد، میتوانید تعداد worker processes و اتصالات همزمان را تنظیم کنید.
- تنظیم تعداد Worker Processes:
تعداد worker processes باید برابر با تعداد هستههای CPU سرور شما باشد. برای این کار، فایلnginx.conf
را باز کرده و مقدارworker_processes
را تنظیم کنید:worker_processes auto; # به صورت خودکار تعداد هستههای CPU را تشخیص میدهد
- تنظیم Worker Connections:
تعداد اتصالات همزمان هر worker process را میتوانید با تنظیمworker_connections
در بلوکevents
کنترل کنید:events { worker_connections 1024; }
2. فعالسازی کشسازی
کشسازی میتواند به طور قابل توجهی عملکرد سرور را بهبود بخشد، به ویژه برای وبسایتهایی که محتوای ثابت یا نیمهثابت ارائه میدهند.
- کشسازی فایلهای استاتیک:
برای کشسازی فایلهای استاتیک مانند تصاویر، CSS و JavaScript، میتوانید از دستورات زیر در پیکربندی Nginx استفاده کنید:location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public, no-transform"; }
- کشسازی پروکسی:
اگر از Nginx به عنوان پروکسی معکوس استفاده میکنید، میتوانید کشسازی پاسخهای سرورهای پشتیبان را فعال کنید:proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; server { location / { proxy_cache my_cache; proxy_pass http://backend; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; } }
3. فشردهسازی Gzip
فشردهسازی Gzip میتواند حجم دادههای ارسالی به کلاینت را کاهش داده و زمان بارگذاری صفحات را بهبود بخشد.
- فعالسازی Gzip:
برای فعالسازی Gzip، فایلnginx.conf
را باز کرده و تنظیمات زیر را اضافه کنید:gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_min_length 1000; gzip_comp_level 6; gzip_proxied any; gzip_vary on;
4. استفاده از HTTP/2
HTTP/2 یک پروتکل پیشرفته است که عملکرد سرور را بهبود میبخشد. برای فعالسازی HTTP/2، پیکربندی زیر را به بلوک server
اضافه کنید:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
root /var/www/example.com;
index index.html;
}
5. تنظیمات اتصال Keepalive
فعالسازی Keepalive میتواند تعداد اتصالات TCP را کاهش داده و عملکرد سرور را بهبود بخشد.
- تنظیم Keepalive Timeout:
keepalive_timeout 65; keepalive_requests 100;
6. استفاده از ماژولهای اضافی
Nginx از ماژولهای مختلفی پشتیبانی میکند که میتوانند عملکرد سرور را بهبود بخشند. برخی از این ماژولها عبارتند از:
- ngx_pagespeed: برای بهینهسازی خودکار صفحات وب.
- ngx_brotli: برای فشردهسازی پیشرفته با استفاده از الگوریتم Brotli.
- ngx_cache_purge: برای مدیریت کشسازی.
برای نصب این ماژولها، ممکن است نیاز به کامپایل مجدد Nginx داشته باشید.
7. نظارت و تنظیمات مداوم
بهینهسازی یک فرآیند مداوم است. با استفاده از ابزارهای مانیتورینگ مانند Prometheus، Grafana و یا ابزارهای داخلی Nginx مانند stub_status
، میتوانید عملکرد سرور را به طور مداوم نظارت کرده و تنظیمات لازم را اعمال کنید.
در بخش بعدی، به نتیجهگیری و جمعبندی مطالب ارائه شده خواهیم پرداخت.
نتیجهگیری
در این مقاله، مراحل کامل راهاندازی سرور وب با استفاده از Nginx روی سیستمعامل لینوکس را بررسی کردیم. از نصب اولیه و پیکربندی پایه تا بهینهسازی عملکرد و مدیریت سرور، تمامی جنبههای ضروری برای راهاندازی یک سرور وب کارآمد و پایدار پوشش داده شد. در ادامه، خلاصهای از مراحل و نکات کلیدی ارائه شده را مرور میکنیم:
- نصب Nginx: نحوه نصب Nginx روی توزیعهای مختلف لینوکس مانند Ubuntu، CentOS و Debian را یاد گرفتید.
- پیکربندی اولیه: با ساختار فایلهای پیکربندی Nginx آشنا شدید و نحوه تنظیم Virtual Hosts و تنظیمات امنیتی را فرا گرفتید.
- مدیریت و نگهداری: دستورات اصلی برای مدیریت سرویس Nginx، بررسی لاگها و بهروزرسانی سرور را یاد گرفتید.
- بهینهسازی عملکرد: روشهای مختلف برای بهبود عملکرد Nginx، از جمله کشسازی، فشردهسازی Gzip و استفاده از HTTP/2 را بررسی کردید.
گامهای بعدی
برای ادامه یادگیری و بهبود مهارتهای خود در زمینه Nginx، میتوانید منابع زیر را مطالعه کنید:
- مستندات رسمی Nginx: https://nginx.org/en/docs/
- مقالات آموزشی پیشرفته: برای یادگیری تنظیمات پیشرفتهتر و استفاده از ماژولهای اضافی.
- ابزارهای مانیتورینگ: استفاده از ابزارهایی مانند Prometheus و Grafana برای نظارت بر عملکرد سرور.
با دنبال کردن این مراحل و استفاده از منابع یادگیری، میتوانید یک سرور وب قدرتمند و ایمن با استفاده از Nginx راهاندازی و مدیریت کنید. امیدواریم این مقاله برای شما مفید بوده باشد و بتوانید از آن در پروژههای خود استفاده کنید.
دیدگاهها