Home » Как переместить корневую папку Nginx на Ubuntu 24.04
Как переместить корневую папку Nginx на Ubuntu 24.04

Как переместить корневую папку Nginx на Ubuntu 24.04

В этой статье разберёмся, как грамотно и безболезненно переместить корневую папку Nginx на Ubuntu 24.04. Почему это вообще важно? Потому что дефолтная директория /var/www/html — это, конечно, классика, но далеко не всегда подходит под реальные задачи: хочется разнести проекты по разным папкам, хранить сайты на отдельном разделе, или просто навести порядок в инфраструктуре. А ещё — это must-have для тех, кто автоматизирует деплой, использует CI/CD, или просто хочет держать всё под контролем. В общем, если ты когда-нибудь думал: “А можно ли сделать по-своему?”, — этот гайд для тебя.

Как это работает?

Nginx — это веб-сервер, который по умолчанию ищет файлы сайта в определённой директории. На Ubuntu 24.04 это /var/www/html. Но на самом деле, Nginx абсолютно всё равно, где лежат твои файлы — хоть на отдельном SSD, хоть в папке пользователя, хоть на сетевом хранилище. Всё решается одной строчкой в конфиге.

Вся магия происходит в файле конфигурации сайта (виртуального хоста), который обычно лежит в /etc/nginx/sites-available/. Там есть директива root — она и указывает, где искать твой сайт. Меняешь путь — и Nginx начинает обслуживать файлы из новой папки.

  • root — указывает корневую директорию для отдачи файлов.
  • alias — похожая штука, но работает чуть иначе (об этом ниже).
  • Всё остальное — вопрос прав, безопасности и привычки.

Как быстро и просто всё настроить?

Погнали по шагам. Вот прям чек-лист, чтобы не забыть ничего важного.

  1. Создай новую директорию для сайта. Например, /srv/myproject/public или /home/username/webroot. Главное — чтобы у Nginx были права на чтение (и желательно, чтобы никто лишний туда не лазил).
  2. Скопируй или перемести туда файлы сайта. Если это новый проект — просто разверни туда свой билд.
  3. Открой конфиг сайта. Обычно это /etc/nginx/sites-available/default или свой файл, если ты уже создавал отдельные виртуальные хосты.
  4. Найди директиву root и поменяй путь. Например:

    server {
      listen 80;
      server_name example.com;
      root /srv/myproject/public;
      index index.html index.htm;
    ...
    }
  5. Проверь права доступа. Владелец и группа должны позволять Nginx читать файлы. Обычно Nginx работает от пользователя www-data:

  6. sudo chown -R www-data:www-data /srv/myproject/public
    sudo chmod -R 755 /srv/myproject/public

  7. Перезапусти Nginx. После изменений нужно перезапустить сервис:

  8. sudo systemctl reload nginx

  9. Проверь, что всё работает. Открой сайт в браузере или воспользуйся curl:

  10. curl http://localhost/

Примеры, схемы, практические советы

Погнали разбирать реальные кейсы. Вот таблица сравнения разных подходов:

Подход Плюсы Минусы Когда использовать
Стандартный путь
/var/www/html
Просто, всё работает “из коробки”, много туториалов Свалка файлов, неудобно для нескольких проектов, не всегда удобно для автоматизации Тестовые стенды, быстрый старт, обучение
Собственная папка
/srv/project/public
Гибко, удобно для деплоя, можно разнести проекты, легко делать бэкапы Нужно настраивать права, помнить о SELinux/AppArmor (если включено) Продакшн, CI/CD, несколько сайтов на одном сервере
Папка пользователя
/home/user/webroot
Удобно для разработки, можно использовать git/hg/svn прямо в папке Проблемы с безопасностью, нужно аккуратно настраивать права Локальная разработка, staging, pet-проекты
Символическая ссылка
/var/www/html → /mnt/ssd/project
Можно хранить файлы на отдельном разделе, легко менять местоположение Если диск отвалится — сайт упадёт, нужно следить за монтированием Проекты с большими файлами, отдельные диски под статику

Положительный кейс

У тебя несколько сайтов на одном сервере. Каждый лежит в своей папке: /srv/site1/public, /srv/site2/public. В sites-available создаёшь отдельные конфиги, в каждом прописываешь свой root. Всё чётко, каждый сайт изолирован, деплой автоматизируется одной командой.

Отрицательный кейс

Ты решил хранить сайт в /home/user/project, но забыл поменять владельца и права. В итоге Nginx не может читать файлы, сайт не открывается, в логах Permission denied. Решение — всегда проверяй права и не давай доступ всему миру (никаких chmod 777!).

Полный список команд


# Создать новую папку для сайта
sudo mkdir -p /srv/myproject/public

# Скопировать файлы сайта
sudo cp -r /var/www/html/* /srv/myproject/public/

# Назначить владельца
sudo chown -R www-data:www-data /srv/myproject/public

# Открыть конфиг сайта
sudo nano /etc/nginx/sites-available/default

# Изменить директиву root:
# root /srv/myproject/public;

# Перезапустить Nginx
sudo systemctl reload nginx

# Проверить статус
sudo systemctl status nginx

# Проверить конфиг на ошибки
sudo nginx -t

# Проверить доступность сайта
curl http://localhost/

Похожие решения, программы и утилиты

  • Apache — тоже позволяет менять DocumentRoot, но синтаксис другой. В Nginx всё проще и прозрачнее.
  • Caddy — современный веб-сервер, где корневую папку можно задать прямо в Caddyfile.
  • Lighttpd — лёгкий сервер, тоже поддерживает смену корня.
  • Docker — если ты используешь контейнеры, то путь к корню задаётся через volume-монтирование.
  • Ansible, Chef, Puppet — автоматизация настройки серверов, можно прописать шаблоны для разных путей.

Статистика и сравнение с другими решениями

  • По данным W3Techs, Nginx обслуживает более 33% всех сайтов в мире.
  • Гибкая настройка путей — одна из причин популярности Nginx среди DevOps и хостинг-провайдеров.
  • В отличие от Apache, где часто приходится править несколько файлов и перезапускать сервис, в Nginx достаточно одной строки и reload.

Интересные факты и нестандартные способы использования

  • Можно хранить корень сайта на сетевом диске (NFS, GlusterFS) — удобно для кластеров и балансировки нагрузки.
  • Используй alias вместо root для отдачи статических файлов из разных папок (например, отдельная папка для картинок или видео).
  • Можно сделать “горячее” переключение между версиями сайта: держи несколько папок (public_v1, public_v2), меняй root — и мгновенно переключайся между релизами.
  • В связке с Let’s Encrypt удобно хранить challenge-файлы в отдельной папке и прокидывать туда только нужные запросы.
  • Если используешь autoindex, можно быстро раздавать любые каталоги без лишних настроек.

Новые возможности для автоматизации и скриптов

Когда корневая папка вынесена в отдельное место, открывается куча возможностей:

  • Легко автоматизировать деплой через rsync, scp, git pull — не трогая системные директории.
  • Можно делать атомарные обновления: выкладываешь новую версию в отдельную папку, меняешь root — и всё, откат на старую версию занимает секунды.
  • Удобно интегрировать с CI/CD: пайплайн сам выкладывает билд в нужную папку, а скрипт меняет конфиг и перезапускает Nginx.
  • Можно делать бэкапы только нужных папок, не захватывая весь /var/www.
  • В связке с Fail2Ban или Cloudflare можно изолировать разные проекты для лучшей безопасности.

Вывод — заключение и рекомендации

Перемещать корневую папку Nginx — это не только просто, но и очень полезно. Ты получаешь гибкость, удобство для автоматизации, безопасность и контроль над инфраструктурой. Не бойся экспериментировать: пробуй разные схемы, автоматизируй деплой, используй отдельные разделы и даже сетевые хранилища. Главное — не забывай про права доступа и регулярные бэкапы.

Если ты только начинаешь — используй стандартные пути, чтобы разобраться в механике. Если уже есть опыт — выноси проекты в отдельные папки, автоматизируй всё, что можно, и не забывай про документацию (официальный сайт Nginx).

А если нужен VPS или выделенный сервер для экспериментов и продакшна — смело переходи по ссылкам: VPS или выделенный сервер. Пусть твои проекты всегда будут под надёжным контролем!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked