در این مقاله قدمبهقدم نصب Nginx روی Ubuntu، کانفیگ Nginx، پیکربندی SSL در Nginx، راهاندازی وبسرور و بهینهسازی Nginx را به زبان ساده آموزش میدهم. هدف این راهنما ارائهٔ روشهای عملی برای راهاندازی وبسرور امن و پرکارایی است تا هم تازهواردها و هم مدیران سیستم بتوانند سریع سرویس را ارائه دهند.
پیشنیازها
برای آغاز نصب Nginx روی Ubuntu به موارد زیر نیاز دارید:
- سرور یا ماشین مجازی با Ubuntu نسخهٔ 18.04 یا جدیدتر.
- دسترسی کاربر با دسترسی sudo.
- دامنهای که به آیپی سرور اشاره کند (برای SSL لازم است).
- پورتهای 80 و 443 در فایروال باز باشند.
- دسترسی به خط فرمان و آشنایی با ویرایشگر متنی مثل nano یا vim.
نصب و بررسی سرویس
برای نصب Nginx دستورهای زیر را اجرا کنید:
sudo apt update
sudo apt install nginx -y
پس از نصب، سرویس را اجرا کنید و وضعیت آن را چک کنید:
sudo systemctl enable --now nginx
sudo systemctl status nginx
اگر سرویس فعال باشد، مرورگر را باز کنید و آیپی سرور را وارد کنید. اگر صفحهٔ پیشفرض Nginx را دیدید، نصب Nginx روی Ubuntu موفقیتآمیز بوده است.
ساختار فایلها و مدیریت سایتها
فایلهای تنظیمات را در /etc/nginx مییابید. برای مدیریت سایتها از دایرکتوریهای sites-available و sites-enabled استفاده کنید. برای افزودن سایت جدید این مراحل را دنبال کنید:
- دایرکتوری وب را ایجاد کنید:
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com
- فایل کانفیگ سایت را در
sites-availableایجاد کنید و سپس آن را بهsites-enabledلینک کنید:
sudo nano /etc/nginx/sites-available/example.com
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
- تست کانفیگ و بارگذاری مجدد:
sudo nginx -t
sudo systemctl reload nginx
این روش به شما کمک میکند کانفیگ Nginx را به صورت سازماندهیشده مدیریت کنید و چندین سایت را روی یک سرور میزبانی کنید.
کانفیگ نمونه برای سایت
نمونه یک بلاک سرور پایه را اضافه کنید:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
این کانفیگ به شما امکان اجرای فایلهای PHP را با PHP-FPM و سرویسدهی فایلهای ایستا میدهد. با این روش راهاندازی وبسرور برای اپلیکیشنهای ساده را ساده میکند.
پیکربندی SSL (پیکربندی SSL در Nginx)
برای امنسازی ارتباطات از Let’s Encrypt و Certbot استفاده کنید. روند کلی:
نصب Certbot:
sudo apt install certbot python3-certbot-nginx -y
درخواست گواهی:
sudo certbot --nginx -d example.com -d www.example.com
فعالسازی تمدید خودکار:
Certbot به صورت خودکار کرون یا systemd timer اضافه میکند. برای تست تمدید از:
sudo certbot renew --dry-run
پس از نصب گواهی، Nginx را طوری پیکربندی کنید که HTTP را به HTTPS ریدایرکت کند و از listen 443 ssl http2; برای پشتیبانی از HTTP/2 استفاده کنید. پیکربندی SSL در Nginx سرعت و امنیت سایت را بهبود میدهد.
بهینهسازی Nginx و عملکرد
برای بهینهسازی Nginx چند نکته مهم را اعمال کنید:
- تنظیم تعداد worker: در
nginx.confمقدارworker_processesرا برابر با تعداد هستههای CPU قرار دهید. - افزایش
worker_connectionsبرای تحمل اتصالات همزمان بیشتر. - فعالسازی gzip برای کاهش حجم انتقال:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
- فعالسازی HTTP/2 با
listen 443 ssl http2;در بلاک SSL. - استفاده از cache استاتیک با تنظیم header و expires:
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
- استفاده از proxy_cache یا fastcgi_cache برای کاهش بار پردازش در اپلیکیشنهای پویا.
این اقدامات به بهینهسازی Nginx برای سرویسهای پر ترافیک کمک میکنند.
امنیت و سختسازی
برای افزایش امنیت Nginx و سرور:
- فایروال UFW را پیکربندی کنید:
sudo ufw allow 'Nginx Full'
sudo ufw enable
- محدود کردن اندازه آپلود:
client_max_body_size 20M;
- تنظیم هدرهای امنیتی:
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "no-referrer-when-downgrade";
- فعالسازی rate limiting برای جلوگیری از حملات Brute Force:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
- استفاده از AppArmor یا دیگر مکانیسمهای هاردنینگ سیستم.
با اجرای این موارد میتوانید تقلای قابل توجهی در محافظت از سرور ایجاد کنید.
کار با PHP-FPM و پشتبانی از اپلیکیشنها
برای اجرای اپلیکیشنهای PHP از ترکیب Nginx و PHP-FPM استفاده کنید. فایل fastcgi_param و مسیر سوکت را در کانفیگ وارد کنید. سپس سرویس php-fpm را فعال و بررسی کنید:
sudo systemctl enable --now php7.4-fpm
sudo systemctl status php7.4-fpm
اگر از نسخهٔ دیگری از PHP استفاده میکنید، مسیر سوکت را متناسب تنظیم کنید.
مانیتورینگ، لاگها و عیبیابی
برای رفع اشکال فایلهای لاگ را بررسی کنید:
/var/log/nginx/error.logبرای خطاها./var/log/nginx/access.logبرای درخواستها.
ازnginx -tقبل از بارگذاری مجدد کانفیگ استفاده کنید. اگر سرویس بالا نیامد،journalctl -u nginxرا اجرا کنید و خطاها را مطالعه کنید. مدیریت لاگ و بررسی مداوم به نگهداری سرویس کمک زیادی میکند.
بکاپ و مدیریت کانفیگ
کانفیگها را در یک مخزن git محلی قرار دهید تا تغییرات را ردیابی کنید. قبل از هر تغییر مهم از /etc/nginx بکاپ بگیرید:
sudo tar czvf nginx-backup-$(date +%F).tar.gz /etc/nginx
این کار اجازه میدهد سریع به نسخهٔ سالم برگردید و از بروز خطا جلوگیری کنید.
توزیع کلیدواژه و خوانایی مطلب
در متن کلیدواژهها به طور مساوی پخش شدهاند: نصب Nginx روی Ubuntu، کانفیگ Nginx، پیکربندی SSL در Nginx، راهاندازی وبسرور و بهینهسازی Nginx. این توزیع به رفع خطای یواست کمک میکند و همزمان خوانایی را افزایش میدهد. من عمدتاً از جملات معلوم استفاده کردم تا خواننده راحتتر مطلب را دنبال کند.
خدمات وان سرور مرتبط با Nginx
وان سرور سرویسهای VPS مدیریتشده، نصب و کانفیگ Nginx، صدور و نصب گواهی SSL و پشتیبانی ۲۴ ساعته ارائه میدهد. اگر میخواهید به سرعت راهاندازی کنید، میتوانید از سرویسهای آمادهٔ وان سرور استفاده کنید تا نصب Nginx روی Ubuntu و پیکربندی مرتبط به سرعت انجام شود.
چکلیست نهایی قبل از خروج از سرویس
- بررسی عملکرد:
sudo systemctl status nginx - تست کانفیگ:
sudo nginx -t - باز بودن پورتها:
sudo ufw status - تست گواهی SSL در مرورگر و با
openssl s_client - بررسی لاگها برای خطاهای احتمالی
نتیجهگیری
با دنبال کردن این راهنمای قدمبهقدم میتوانید بهسرعت Nginx را نصب، کانفیگ و ایمن کنید و سپس با بهینهسازی Nginx عملکرد سایت خود را افزایش دهید. این متن برای کسانی مناسب است که میخواهند راهاندازی وبسرور را به صورت حرفهای انجام دهند. موفق باشید.

