مقدمه
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
ابتدا مخازن سیستم را بهروزرسانی کنید:
sudo apt update
sudo apt upgrade -y
سپس Nginx را نصب کنید:
sudo apt install nginx -y
پیکربندی پایه
پس از نصب Nginx، باید آن را برای نیازهای خود به درستی پیکربندی کنید.
مدیریت سرویس Nginx
برای بررسی وضعیت سرویس:
systemctl status nginx
برای فعالسازی سرویس در زمان بوت:
sudo systemctl enable nginx
برای ریاستارت یا توقف:
sudo systemctl restart nginx
sudo systemctl stop nginx
ساخت و پیکربندی Virtual Host
ایجاد دایرکتوری سایت:
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html
ایجاد فایل تست:
echo "<h1>Hello from Nginx on Ubuntu!</h1>" > /var/www/example.com/html/index.html
ایجاد فایل پیکربندی Virtual Host:
sudo nano /etc/nginx/sites-available/example.com
محتوا:
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;
}
}
فعالسازی سایت و تست پیکربندی:
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:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
اتصال SSL بهطور خودکار به Nginx اضافه میشود.
پیکربندی HTTP/2 در Nginx
در بلاک سرور:
server {
listen 443 ssl http2;
server_name example.com;
...
}
مدیریت فایروال (UFW)
sudo ufw allow 'Nginx Full'
sudo ufw enable
لاگها و مانیتورینگ
لاگ دسترسی: /var/log/nginx/access.log
لاگ خطا: /var/log/nginx/error.log
مانیتورینگ زنده:
tail -f /var/log/nginx/access.log
بهینهسازی Performance در Nginx
تنظیم تعداد Workerها:
worker_processes auto;
events {
worker_connections 1024;
}
فعالسازی Gzip:
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 تعریف کنید.