Установка Nginx, простой сайт и HTTPS с Certbot (Let's Encrypt).
📋 Требования
- VPS с sudo
- Домен, A-запись на IP сервера
- Открыты 80 и 443 (UFW)
💡 Рекомендация
Для отдачи статики и TLS удобны VPS NVMe.
🚀 Шаг 1: Nginx
Bashsudo apt update sudo apt install nginx -y nginx -v sudo systemctl status nginx
UFW:
Bashsudo ufw allow 'Nginx Full' sudo ufw status
Проверка в браузере: http://IP или http://домен — страница приветствия Nginx.
📝 Шаг 2: сайт
Bashsudo mkdir -p /var/www/mysite.com sudo chown -R $USER:$USER /var/www/mysite.com sudo chmod -R 755 /var/www/mysite.com nano /var/www/mysite.com/index.html
HTML1<!DOCTYPE html> 2<html lang="ru"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Мой сайт</title> 7</head> 8<body> 9 <h1>Добро пожаловать!</h1> 10 <p>Сайт работает на Nginx.</p> 11</body> 12</html>
Bashsudo nano /etc/nginx/sites-available/mysite.com
Nginx1server { 2 listen 80; 3 listen [::]:80; 4 server_name mysite.com www.mysite.com; 5 root /var/www/mysite.com; 6 index index.html; 7 location / { 8 try_files $uri $uri/ =404; 9 } 10}
Замените mysite.com на свой домен.
Bashsudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/ sudo nginx -t sudo rm /etc/nginx/sites-enabled/default sudo systemctl reload nginx
🔒 Шаг 3: Certbot
Bashsudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d mysite.com -d www.mysite.com
Укажите email, примите условия, при запросе редиректа HTTP→HTTPS выберите рекомендуемый вариант.
Bashsudo certbot certificates
Откройте https://домен — замок в адресной строке.
🔄 Автопродление
Bashsudo certbot renew --dry-run sudo systemctl status certbot.timer sudo systemctl enable certbot.timer sudo systemctl start certbot.timer
📁 Пути
/var/www/mysite.com/
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
/etc/letsencrypt/
🛠️ Команды
Nginx: start / stop / restart / reload, sudo nginx -t
Certbot: sudo certbot renew, sudo certbot delete --cert-name mysite.com
Логи: /var/log/nginx/error.log, /var/log/nginx/access.log, /var/log/letsencrypt/letsencrypt.log
🆘 Проблемы
Nginx не стартует — nginx -t, journalctl -u nginx.
Certbot не проходит — DNS dig домен, UFW 80/443, server_name совпадает с доменом.
Нет HTTPS — certbot certificates, nginx -t, ufw allow 443/tcp.
📚 Ссылки
❓ FAQ
Платный SSL? Нет, Let's Encrypt бесплатен.
Срок? ~90 дней, продление автоматическое.
Несколько сайтов? Отдельный конфиг в sites-available и отдельный запуск certbot для каждого набора имён.
Сайт на HTTPS готов.