OffshoreVps
Инструкции14 окт. 20269 мин чтенияАвтор: команда OffshoreVps

Как разместить сайт на VPS с Nginx и HTTPS

Установите Nginx на Ubuntu, создайте блок server, добавьте бесплатный сертификат Let's Encrypt и ускорьте сайт. Команды для копирования, чтобы запустить сайт за 20 минут.

Виртуальный хостинг прост, но VPS даёт скорость, root-доступ и отсутствие шумных соседей. Это руководство за примерно двадцать минут доводит свежий сервер на Ubuntu 24.04 или 22.04 до работающего сайта с HTTPS на Nginx. Каждую команду можно копировать как есть.

Окно терминала на VPS с командами для размещения сайта на Nginx с HTTPS, начиная с «sudo apt update»
Примерно такие команды вы будете выполнять на своём сервере в этом руководстве.

Что вам понадобится

  • VPS как минимум с 1 vCPU и 1 ГБ RAM (наших базовых тарифов хватает для большинства небольших сайтов).
  • Доменное имя, указывающее на IP-адрес сервера (см. наше руководство по привязке домена к VPS).
  • Доступ по SSH под пользователем с правами sudo. Если сервер совсем новый, сначала выполните базовую защиту.

1. Установите Nginx

sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx

Откройте IP-адрес сервера в браузере. Вы должны увидеть стандартную приветственную страницу Nginx. Если нет, проверьте, что брандмауэр разрешает порты 80 и 443:

sudo ufw allow "Nginx Full"
sudo ufw status

2. Создайте папку сайта

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
echo "<h1>It works</h1>" > /var/www/example.com/html/index.html

Везде заменяйте example.com на ваш собственный домен.

Шаги этого руководства по порядку: 1. Что вам понадобится; 2. 1. Установите Nginx; 3. 2. Создайте папку сайта; 4. 4. Добавьте бесплатный HTTPS с Let's Encrypt; 5. 5. Ускорьте работу; 6. Типичные проблемы
Шаги этого руководства по порядку.

3. Добавьте блок server

sudo nano /etc/nginx/sites-available/example.com
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Включите его, проверьте конфигурацию и перезагрузите:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

4. Добавьте бесплатный HTTPS с Let's Encrypt

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

Certbot редактирует ваш блок server, перенаправляет HTTP на HTTPS и устанавливает таймер, который автоматически продлевает сертификат. Проверить таймер можно командой systemctl list-timers | grep certbot.

5. Ускорьте работу

Включите сжатие и кеширование в браузере для статических файлов. Добавьте это внутрь блока server:

gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;

location ~* \.(css|js|png|jpg|jpeg|webp|svg|woff2)$ {
    expires 30d;
    add_header Cache-Control "public";
}

После этого перезагрузите Nginx. Для динамических сайтов, например WordPress, установите PHP-FPM и передавайте ему запросы .php или поставьте перед ними плагин кеширования.

Типичные проблемы

  • 403 Forbidden: Nginx не может прочитать папку. Проверьте владельца и то, что все родительские каталоги исполняемы (chmod o+x).
  • Certbot завершается ошибкой: домен ещё не указывает на сервер или порт 80 заблокирован.
  • Всё ещё показывается страница по умолчанию: удалите /etc/nginx/sites-enabled/default и перезагрузите.