- Home »

Как переместить корневую папку 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 — похожая штука, но работает чуть иначе (об этом ниже).
- Всё остальное — вопрос прав, безопасности и привычки.
Как быстро и просто всё настроить?
Погнали по шагам. Вот прям чек-лист, чтобы не забыть ничего важного.
- Создай новую директорию для сайта. Например,
/srv/myproject/public
или/home/username/webroot
. Главное — чтобы у Nginx были права на чтение (и желательно, чтобы никто лишний туда не лазил). - Скопируй или перемести туда файлы сайта. Если это новый проект — просто разверни туда свой билд.
- Открой конфиг сайта. Обычно это
/etc/nginx/sites-available/default
или свой файл, если ты уже создавал отдельные виртуальные хосты. - Найди директиву
root
и поменяй путь. Например:
server {
listen 80;
server_name example.com;
root /srv/myproject/public;
index index.html index.htm;
...
}
- Проверь права доступа. Владелец и группа должны позволять Nginx читать файлы. Обычно Nginx работает от пользователя
www-data
: - Перезапусти Nginx. После изменений нужно перезапустить сервис:
- Проверь, что всё работает. Открой сайт в браузере или воспользуйся
curl
:
sudo chown -R www-data:www-data /srv/myproject/public
sudo chmod -R 755 /srv/myproject/public
sudo systemctl reload nginx
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 или выделенный сервер. Пусть твои проекты всегда будут под надёжным контролем!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.