OKВсе сервисы работают штатно
InfrawireЛоготип InfrawireДокументация

Nginx и бесплатный SSL (Certbot)

Установка Nginx, простой сайт и HTTPS с Certbot (Let's Encrypt).

📋 Требования

  • VPS с sudo
  • Домен, A-запись на IP сервера
  • Открыты 80 и 443 (UFW)

💡 Рекомендация

Для отдачи статики и TLS удобны VPS NVMe.

🚀 Шаг 1: Nginx

Bash
sudo apt update sudo apt install nginx -y nginx -v sudo systemctl status nginx

UFW:

Bash
sudo ufw allow 'Nginx Full' sudo ufw status

Проверка в браузере: http://IP или http://домен — страница приветствия Nginx.

📝 Шаг 2: сайт

Bash
sudo 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
HTML
1<!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>
Bash
sudo nano /etc/nginx/sites-available/mysite.com
Nginx
1server { 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 на свой домен.

Bash
sudo 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

Bash
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d mysite.com -d www.mysite.com

Укажите email, примите условия, при запросе редиректа HTTP→HTTPS выберите рекомендуемый вариант.

Bash
sudo certbot certificates

Откройте https://домен — замок в адресной строке.

🔄 Автопродление

Bash
sudo 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 совпадает с доменом.
Нет HTTPScertbot certificates, nginx -t, ufw allow 443/tcp.

📚 Ссылки

❓ FAQ

Платный SSL? Нет, Let's Encrypt бесплатен.
Срок? ~90 дней, продление автоматическое.
Несколько сайтов? Отдельный конфиг в sites-available и отдельный запуск certbot для каждого набора имён.


Сайт на HTTPS готов.