مقدمه

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

Nginx علاوه بر وب‌سرور HTTP، به‌عنوان Reverse Proxy، Load Balancer و Mail Proxy نیز استفاده می‌شود. نصب و پیکربندی صحیح آن در اوبونتو، گام اول برای میزبانی وب‌سایت‌ها و اپلیکیشن‌های مدرن است.

فهرست مطالب

مزایای Nginx نسبت به Apache

  • مدیریت بهینه کانکشن‌های همزمان (Event-driven)
  • مصرف RAM و CPU کمتر
  • مناسب برای اپلیکیشن‌های با ترافیک بالا
  • قابلیت Reverse Proxy و Load Balancing داخلی

پیش‌نیازها

  • سرور Ubuntu 20.04 یا 22.04
  • دسترسی کاربر با sudo
  • دامنه ثبت‌شده و رکورد A متصل به سرور
  • اینترنت فعال

نصب Nginx

ابتدا مخازن سیستم را به‌روزرسانی کنید:

Ubuntu Terminal
sudo apt update
sudo apt upgrade -y

سپس Nginx را نصب کنید:

Ubuntu Terminal
sudo apt install nginx -y

پیکربندی پایه

پس از نصب Nginx، باید آن را برای نیازهای خود به درستی پیکربندی کنید.

مدیریت سرویس Nginx

برای بررسی وضعیت سرویس:

Ubuntu Terminal
systemctl status nginx

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

Ubuntu Terminal
sudo systemctl enable nginx

برای ری‌استارت یا توقف:

Ubuntu Terminal
sudo systemctl restart nginx
sudo systemctl stop nginx

ساخت و پیکربندی Virtual Host

ایجاد دایرکتوری سایت:

Ubuntu Terminal
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html

ایجاد فایل تست:

Ubuntu Terminal
echo "<h1>Hello from Nginx on Ubuntu!</h1>" > /var/www/example.com/html/index.html

ایجاد فایل پیکربندی Virtual Host:

Ubuntu Terminal
sudo nano /etc/nginx/sites-available/example.com

محتوا:

Nginx Configuration
server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

فعال‌سازی سایت و تست پیکربندی:

Ubuntu Terminal
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

فعال‌سازی SSL با Let's Encrypt

نصب Certbot:

Ubuntu Terminal
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

اتصال SSL به‌طور خودکار به Nginx اضافه می‌شود.

پیکربندی HTTP/2 در Nginx

در بلاک سرور:

Nginx Configuration
server {
    listen 443 ssl http2;
    server_name example.com;
    ...
}

مدیریت فایروال (UFW)

Ubuntu Terminal
sudo ufw allow 'Nginx Full'
sudo ufw enable

لاگ‌ها و مانیتورینگ

لاگ دسترسی: /var/log/nginx/access.log

لاگ خطا: /var/log/nginx/error.log

مانیتورینگ زنده:

Ubuntu Terminal
tail -f /var/log/nginx/access.log

بهینه‌سازی Performance در Nginx

تنظیم تعداد Workerها:

Nginx Configuration
worker_processes auto;
events {
    worker_connections 1024;
}

فعال‌سازی Gzip:

Nginx Configuration
gzip on;
gzip_types text/plain text/css application/json application/javascript application/xml+rss;

نتیجه‌گیری

Nginx نه‌تنها یک وب‌سرور سریع است بلکه ابزاری جامع برای مدیریت ترافیک وب و افزایش امنیت محسوب می‌شود. با نصب SSL، فعال‌سازی HTTP/2 و بهینه‌سازی پارامترها، می‌توانید تجربه‌ای حرفه‌ای برای کاربران خود فراهم کنید.

پرسش‌های متداول

س: تفاوت Nginx و Apache در عمل چیست؟

ج: Apache فرآیند‌محور است ولی Nginx event-driven است، به همین دلیل Nginx در ترافیک‌های بالا کارایی بهتری دارد.

س: چگونه SSL را به‌طور خودکار تمدید کنم؟

ج: Certbot به‌طور پیش‌فرض Cronjob ایجاد می‌کند. می‌توانید با sudo certbot renew --dry-run تست کنید.

س: چطور چند سایت روی یک Nginx میزبانی کنم؟

ج: با ساخت Virtual Hostهای متعدد در مسیر /etc/nginx/sites-available/ و لینک آن‌ها در /sites-enabled/.

س: آیا می‌توان Nginx را به‌عنوان Load Balancer استفاده کرد؟

ج: بله، با ماژول upstream می‌توانید چند سرور backend تعریف کنید.