Руководство по настройке Nginx и бесплатного SSL (Certbot) на VPS-сервере
Автор: Javohir Abdullayev · · Сервер и DevOps

Введение: Почему Nginx и SSL обязательны для каждого проекта?
Когда веб-проект или Telegram-бот API готов, наступает время развернуть его на сервере (VPS) для реальных пользователей. Многие начинающие разработчики запускают приложение напрямую на открытом порту (например, 8000 или 5000). Однако это небезопасная практика с точки зрения защиты данных и производительности.
Nginx — это современный, быстрый и стабильный обратный прокси-сервер (reverse proxy), который принимает входящие запросы, быстро раздает статические файлы и безопасно перенаправляет трафик на ваше приложение на Django, FastAPI или Node.js. SSL (HTTPS), в свою очередь, шифрует данные между пользователем и сервером, гарантируя безопасность и повышая рейтинг сайта в поисковых системах.
В этом практическом руководстве мы шаг за шагом рассмотрим установку Nginx на Ubuntu VPS, привязку доменного имени и настройку бесплатного SSL-сертификата с помощью Let's Encrypt.
Шаг 1: Обновление VPS-сервера и установка Nginx
Подключитесь к серверу по SSH и обновите системные пакеты:
sudo apt update && sudo apt upgrade -y
sudo apt install nginx -yПосле установки Nginx вы можете проверить его статус:
sudo systemctl status nginxЕсли включен межсетевой экран (UFW), разрешите открытые порты для Nginx:
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw statusШаг 2: Направление доменного имени на VPS-сервер (DNS)
Перед получением SSL-сертификата ваше доменное имя должно быть правильно привязано к IP-адресу VPS-сервера. В панели управления доменом добавьте следующие две A-записи (DNS A record):
- Host: @ | Значение: IP_Вашего_Сервера
- Host: www | Значение: IP_Вашего_Сервера
Распространение DNS-записей обычно занимает от 5 минут до 24 часов. Проверить это можно с помощью команды ping yourdomain.uz.
Шаг 3: Конфигурация Nginx Server Block (Virtual Host)
Для каждого отдельного домена рекомендуется создавать отдельный серверный блок Nginx. Откроем новый конфигурационный файл:
sudo nano /etc/nginx/sites-available/sizningdomen.uzВставьте в этот файл следующую базовую конфигурацию (предполагается, что проект работает на порту 8000):
server {
listen 80;
server_name sizningdomen.uz www.sizningdomen.uz;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Сохраните файл (Ctrl+O, Enter, Ctrl+X). Теперь активируем конфигурацию и проверим на наличие синтаксических ошибок:
sudo ln -s /etc/nginx/sites-available/sizningdomen.uz /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxШаг 4: Установка Certbot и получение бесплатного SSL от Let's Encrypt
Certbot — это наиболее удобный инструмент для автоматического получения сертификатов Let's Encrypt и обновления настроек Nginx. Установим его через пакетный менеджер Snap:
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbotТеперь установим SSL-сертификат одной командой с помощью плагина Nginx:
sudo certbot --nginx -d sizningdomen.uz -d www.sizningdomen.uzВ процессе Certbot попросит указать ваш адрес электронной почты и подтвердить согласие с условиями лицензии. После успешного завершения Certbot автоматически добавит настройки HTTPS в конфигурацию Nginx и настроит редирект всех HTTP-запросов на HTTPS.
Шаг 5: Проверка автоматического продления SSL (Auto-renewal)
Сертификаты Let's Encrypt действуют в течение 90 дней. Certbot настраивает в системе специальный таймер, который автоматически обновляет сертификат за 30 дней до истечения срока его действия. Чтобы убедиться, что механизм автообновления работает корректно, выполните тестовую команду:
sudo certbot renew --dry-runЕсли команда завершилась без ошибок, ваши сертификаты будут регулярно обновляться в автоматическом режиме.
Заключение и дополнительные рекомендации по безопасности
Поздравляем! Вы успешно настроили обратный прокси Nginx и полностью защищенный протокол HTTPS на своем VPS-сервере. Теперь ваш проект безопасен для пользователей и полностью соответствует требованиям поисковых систем.
В качестве следующих шагов для дальнейшего усиления безопасности сервера рекомендуем сменить стандартный SSH-порт, установить Fail2ban, а также включить сжатие Gzip в Nginx.
Теги: #Nginx #SSL sertifikat #VPS #DevOps #Certbot