Прежде чем начать, убедитесь, что ваш домен указывает на IP-адрес VPS через A-запись (как это сделать). Без этого сертификат выпустить не получится. В примерах используется домен mydomain.com.
1. Установите Nginx и откройте порты
apt install -y nginx
ufw allow 'Nginx Full'
Если открыть IP-адрес VPS в браузере, вы уже увидите приветственную страницу Nginx.
2. Ваш сайт
mkdir -p /var/www/mydomain
echo '<meta charset="utf-8"><h1>It works!</h1>' > /var/www/mydomain/index.html
Создайте файл /etc/nginx/sites-available/mydomain:
server {
listen 80;
server_name mydomain.com www.mydomain.com;
root /var/www/mydomain;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
ln -s /etc/nginx/sites-available/mydomain /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
nginx -t проверяет конфигурацию на ошибки, прежде чем что-либо применять.
3. SSL-сертификат
apt install -y certbot python3-certbot-nginx
certbot --nginx -d mydomain.com -d www.mydomain.com
Certbot попросит адрес электронной почты (чтобы предупредить вас, если что-то пойдёт не так) и согласие с условиями. Nginx он настроит сам, включая перенаправление с HTTP на HTTPS.
4. Автоматическое продление
Сертификаты действуют 90 дней, и certbot продлевает их сам. Проверьте, что продление сработает:
certbot renew --dry-run
Если что-то не работает
- Certbot не может подтвердить домен: проверьте командой
nslookup mydomain.com, что домен указывает на ваш IP, а порт 80 открыт. - Cloudflare: с оранжевым облаком тоже работает; если при выпуске возникают проблемы, переключите облако в серый режим, выпустите сертификат и снова включите оранжевое.
- Ошибки 502: если Nginx проксирует запросы к приложению (Node, PHP…), значит, это приложение не запущено или слушает другой порт.