این راهنما به شما نشان میدهد چگونه Nginx را نصب کنید، یک وبسایت پیکربندی کنید و با Certbot یک گواهی SSL رایگان بگیرید تا سایت خود را با HTTPS امن کنید.
📋 پیشنیازها
- یک سرور VPS با دسترسی روت (root) یا sudo
- یک دامنه که به IP سرور شما اشاره کند (مثال:
monsite.com) - پورتهای 80 (HTTP) و 443 (HTTPS) باز در فایروال شما
نکته: اگر هنوز دامنه ندارید، میتوانید با IP آزمایش کنید، اما Certbot برای گواهیهای SSL به دامنه نیاز دارد.
💡 پیشنهاد زیرساخت
Nginx و Certbot روی VPSهای NVMe ما عالی کار میکنند؛ این سرورها عملکرد دیسک فوقالعادهای برای ارائه سریع وبسایتهای شما دارند. دیسکهای NVMe زمان پاسخ بهینه را برای بازدیدکنندگان شما تضمین میکنند.
🚀 مرحله 1: نصب Nginx
بهروزرسانی بستهها
Bashsudo apt update
نصب Nginx
Bashsudo apt install nginx -y
بررسی نصب
Bash# Vérifier que Nginx est installé nginx -v # Vérifier que Nginx est démarré sudo systemctl status nginx
اگر همهچیز درست باشد، باید active (running) را ببینید.
مجاز کردن Nginx در فایروال (UFW)
Bash# Autoriser HTTP (port 80) sudo ufw allow 'Nginx HTTP' # Autoriser HTTPS (port 443) sudo ufw allow 'Nginx HTTPS' # Vérifier les règles sudo ufw status
آزمایش Nginx
مرورگر خود را باز کنید و به این نشانی بروید:
http://votre-ip-serveurیاhttp://votre-domaine.com
باید صفحه پیشفرض Nginx را ببینید که تأیید میکند نصب درست کار میکند!
📝 مرحله 2: پیکربندی وبسایت شما
ساخت پوشه برای سایت شما
Bash# Créer le dossier (remplacez monsite.com par votre domaine) sudo mkdir -p /var/www/monsite.com # Donner les permissions sudo chown -R $USER:$USER /var/www/monsite.com sudo chmod -R 755 /var/www/monsite.com
ساخت یک صفحه HTML ساده
Bash# Créer la page d'index nano /var/www/monsite.com/index.html
این محتوای ساده را اضافه کنید:
HTML1<!DOCTYPE html> 2<html lang="fr"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Mon Site Web</title> 7</head> 8<body> 9 <h1>Bienvenue sur mon site !</h1> 10 <p>Votre site web fonctionne correctement avec Nginx.</p> 11</body> 12</html>
با Ctrl + X، سپس Y، سپس Enter ذخیره کنید.
ساخت پیکربندی Nginx
Bash# Créer le fichier de configuration sudo nano /etc/nginx/sites-available/monsite.com
این پیکربندی را اضافه کنید:
Nginx1server { 2 listen 80; 3 listen [::]:80; 4 5 server_name monsite.com www.monsite.com; 6 7 root /var/www/monsite.com; 8 index index.html; 9 10 location / { 11 try_files $uri $uri/ =404; 12 } 13}
مهم:
monsite.comرا در همه جاها با نام دامنه واقعی خود جایگزین کنید.
فایل را ذخیره کنید.
فعالسازی سایت
Bash# Créer un lien symbolique pour activer le site sudo ln -s /etc/nginx/sites-available/monsite.com /etc/nginx/sites-enabled/ # Vérifier la configuration Nginx sudo nginx -t
اگر syntax is ok و test is successful را دیدید، همهچیز درست است!
حذف سایت پیشفرض (اختیاری)
Bash# Supprimer le site par défaut sudo rm /etc/nginx/sites-enabled/default # Recharger Nginx sudo systemctl reload nginx
آزمایش سایت شما
مرورگر خود را باز کنید و به http://votre-domaine.com بروید. باید صفحه HTML خود را ببینید!
🔒 مرحله 3: نصب Certbot و دریافت گواهی SSL
Certbot ابزاری است که امکان دریافت خودکار گواهیهای SSL رایگان از Let's Encrypt را فراهم میکند.
نصب Certbot
Bash# Installer Certbot et le plugin Nginx sudo apt install certbot python3-certbot-nginx -y
دریافت گواهی SSL
Bash# Obtenir un certificat SSL pour votre domaine sudo certbot --nginx -d monsite.com -d www.monsite.com
مهم:
monsite.comرا با دامنه واقعی خود جایگزین کنید.
Certbot چند پرسش از شما میپرسد:
- ایمیل: نشانی ایمیل خود را وارد کنید (برای اعلانهای تمدید)
- شرایط استفاده: با
A(Agree) بپذیرید - اشتراکگذاری ایمیل: بسته به ترجیح خود
Y(Yes) یاN(No) را انتخاب کنید - تغییر مسیر HTTP به HTTPS: گزینه
2را انتخاب کنید (تغییر مسیر خودکار پیشنهاد میشود)
بررسی گواهی
Bash# Vérifier que le certificat a été créé sudo certbot certificates
باید گواهی خود را بههمراه تاریخهای انقضا در فهرست ببینید.
آزمایش سایت HTTPS شما
مرورگر خود را باز کنید و به https://votre-domaine.com بروید.
باید این موارد را ببینید:
- یک قفل سبز 🔒 در نوار نشانی
- سایت شما بهصورت HTTPS (امن) بارگذاری شده است
تبریک! سایت شما اکنون با SSL امن شده است!
🔄 مرحله 4: تمدید خودکار گواهی
گواهیهای Let's Encrypt پس از 90 روز منقضی میشوند. Certbot میتواند آنها را بهطور خودکار تمدید کند.
آزمایش تمدید خودکار
Bash# Tester le renouvellement automatique sudo certbot renew --dry-run
اگر The dry run was successful را دیدید، تمدید خودکار درست کار میکند!
بررسی سرویس تمدید
Certbot بهطور خودکار یک تایمر systemd برای تمدید گواهیها میسازد. آن را بررسی کنید:
Bash# Vérifier le timer sudo systemctl status certbot.timer # Si le timer n'est pas actif, l'activer sudo systemctl enable certbot.timer sudo systemctl start certbot.timer
گواهی پیش از انقضا بهطور خودکار تمدید خواهد شد.
📁 ساختار فایلهای شما
فایلهای مهم در این مسیرها قرار دارند:
/var/www/monsite.com/ # Fichiers de votre site web
/etc/nginx/ # Configuration Nginx
/etc/nginx/sites-available/ # Sites disponibles
/etc/nginx/sites-enabled/ # Sites actifs
/etc/letsencrypt/ # Certificats SSL
✅ بررسی نهایی
بررسی اینکه Nginx کار میکند
Bash# Statut du service sudo systemctl status nginx # Tester la configuration sudo nginx -t
بررسی اینکه SSL کار میکند
Bash# Voir les certificats sudo certbot certificates # Vérifier la date d'expiration sudo certbot certificates | grep "Expiry"
آزمایش سایت شما
- به
https://votre-domaine.comبروید - قفل سبز را در مرورگر بررسی کنید
- روی قفل کلیک کنید تا جزئیات گواهی را ببینید
🛠️ فرمانهای مفید
مدیریت Nginx
Bash# Démarrer Nginx sudo systemctl start nginx # Arrêter Nginx sudo systemctl stop nginx # Redémarrer Nginx sudo systemctl restart nginx # Recharger Nginx (sans interruption) sudo systemctl reload nginx # Tester la configuration sudo nginx -t
مدیریت گواهیهای SSL
Bash# Renouveler manuellement tous les certificats sudo certbot renew # Renouveler un certificat spécifique sudo certbot renew --cert-name monsite.com # Voir tous les certificats sudo certbot certificates # Supprimer un certificat sudo certbot delete --cert-name monsite.com
مشاهده لاگها
Bash# Logs Nginx sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/nginx/access.log # Logs Certbot sudo tail -f /var/log/letsencrypt/letsencrypt.log
🆘 عیبیابی
Nginx شروع نمیشود
Bash# Vérifier les erreurs de configuration sudo nginx -t # Voir les logs d'erreur sudo journalctl -u nginx -n 50
گواهی SSL نصب نمیشود
مشکل: Certbot نمیتواند دامنه شما را تأیید کند.
راهحلها:
-
بررسی کنید دامنه شما واقعاً به IP سرور اشاره میکند:
Bashdig monsite.com -
بررسی کنید پورتهای 80 و 443 باز هستند:
Bashsudo ufw status -
بررسی کنید Nginx روی پورت 80 گوش میدهد:
Bashsudo netstat -tlnp | grep nginx -
مطمئن شوید پیکربندی Nginx شما از
server_nameدرست استفاده میکند
سایت روی HTTPS بارگذاری نمیشود
-
بررسی کنید گواهی وجود دارد:
Bashsudo certbot certificates -
پیکربندی Nginx را بررسی کنید:
Bashsudo nginx -t sudo cat /etc/nginx/sites-enabled/monsite.com -
مطمئن شوید فایروال پورت 443 را مجاز میکند:
Bashsudo ufw allow 443/tcp
خطای 502 Bad Gateway
این خطا یعنی Nginx نمیتواند با برنامه شما ارتباط برقرار کند.
Bash# Vérifier les logs Nginx sudo tail -f /var/log/nginx/error.log # Vérifier que votre application fonctionne sudo systemctl status votre-application
📚 منابع بیشتر
❓ پرسشهای متداول
پرسش: آیا باید برای گواهی SSL هزینه بپردازم؟
پاسخ: خیر! Certbot از Let's Encrypt استفاده میکند که گواهیهای SSL رایگان ارائه میدهد.
پرسش: آیا گواهی من منقضی میشود؟
پاسخ: بله، پس از 90 روز، اما Certbot آن را بهطور خودکار تمدید میکند.
پرسش: آیا میتوانم چند سایت روی یک سرور داشته باشم؟
پاسخ: بله! برای هر سایت یک فایل پیکربندی در /etc/nginx/sites-available/ بسازید.
پرسش: چگونه یک زیردامنه اضافه کنم؟
پاسخ: یک پیکربندی جدید Nginx بسازید و با sudo certbot --nginx -d sous-domaine.monsite.com گواهی دریافت کنید.
پرسش: اگر فراموش کردم گواهی خود را تمدید کنم چه کنم؟
پاسخ: Certbot آن را بهطور خودکار تمدید میکند. میتوانید sudo certbot renew را هم بهصورت دستی اجرا کنید.
سایت شما اکنون با HTTPS امن شده است! 🚀🔒