yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяОблако для мобильных и веб‑приложенийСайт в облакеАналитика данных в облакеХранение данных в облакеАналитика данных в облакеИнфраструктура для 1С в облакеМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингРазработка и тестирование в облакеEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Evolution Bare MetalEvolution SSH KeysEvolution ImageEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksEvolution TagsEvolution Task HistoryCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSCloud MonitoringCloud LoggingАренда GPUDirect ConnectCDNCloud AdvisorCross-platform connectionAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLAdvanced Image Management ServiceAdvanced Auto ScalingAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Связаться с нами

Как настроить VirtualHost Apache в Ubuntu

При размещении нескольких сайтов на одном сервере нужно сделать так, чтобы каждый домен корректно обслуживался. Для этого настраиваются виртуальные хосты — VirtualHost. Они позволяют разделять ресурсы, привязывать разные доменные имена к своим каталогам, делать настройки для каждого проекта. Разберемся, как организовать виртуальный хост Apache в Ubuntu. 

Инструкции
Иллюстрация для статьи на тему «Как настроить VirtualHost Apache в Ubuntu»
Продукты из этой статьи:
Иконка-Evolution Managed Kafka®
Evolution Managed Kafka®

Установка Apache

Apache на Ubuntu можно установить через пакетный менеджер APT. Перед установкой обновите пакеты и списки зависимостей:

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

Установите Apache с помощью команды:

После установки и первого запуска проверьте статус службы: 

По умолчанию Apache слушает порт 80. Корневая директория (DocumentRoot) для сайта по умолчанию указана в конфигурационном файле /etc/apache2/sites-available/000-default.conf и равна /var/www/html

После установки служба будет автоматически запускаться. Управлять ей необходимо через systemd. В таблице — основные команды для ручного управления:

Действие
Команда
Запуск Apache
sudo systemctl start apache2
Остановка Apache
sudo systemctl stop apache2
Перезапуск службы
sudo systemctl restart apache2
Включение автозапуска при старте системы
sudo systemctl enable apache2

Начальная настройка Apache

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

Настройка брандмауэра

На Ubuntu для управления брандмауэром (основанным на netfilter/iptables) часто используется утилита UFW (Uncomplicated Firewall). Во время установки Apache в конфигурации должны появиться профили, которые позволяют открывать необходимые для работы веб-сервера порты. Проверьте их наличие с помощью команды: 

Должны быть такие профили: 

  • Apache — порт 80 (HTTP);

  • Apache Secure — порт 443 (HTTPS);

  • Apache Full — порты 80 и 443.

Если нужен доступ только по HTTP, выполните:

Если хотите использовать HTTPS, выполните:

Проверьте статус брандмауэра и применение настроек:

Если UFW не работает, включите его командой:

После активации настроек веб-сервер будет принимать входящие соединения на портах, которые вы открыли. 

Проверка состояния сервера

После настроек проверьте, что служба Apache запустилась и правильно обрабатывает запросы:

Если служба запущена, вы увидите статус active или running в строке состояния. Дальше убедитесь, что слушается порт 80:

Затем проверьте доступность сервера, открыв в своем браузере адрес:

Если вы верно выполнили все шаги установки, откроется стандартная стартовая страница Apache. 

Альтернативный вариант проверки — через командную строку: 

О корректной работе веб-сервера говорит статус HTTP/1.1 200 OK, который должен появиться в ответе. 

Настройка виртуального хоста

В Ubuntu конфигурационные файлы виртуальных хостов находятся в каталоге /etc/apache2/sites-available/. Настройки можно осуществлять с помощью стандартных утилит Apache. 

Настройка виртуального хостаНастройка виртуального хоста

Подготовка структуры директорий

Для удобства администрирования и изоляции проектов создайте для каждого сайта отдельный каталог в /var/www/. Пример команды, которая позволит создать директорию:

Назначьте владельца директории для управления файлами. Это должен быть пользователь, от имени которого работаете вы или другой член команды. Пример:

Задайте для пользователя права доступа:

Чтобы проверить работу сайта, создайте тестовую страницу:

В конфигурацию добавьте минимальное содержимое, например: 

Сохраните файл и настройки. Теперь каталог сайта можно подключать в конфигурации Apache.

Создание конфигурационного файла виртуального хоста

Файлы виртуальных хостов в Ubuntu создаются в каталоге /etc/apache2/sites-available/. Это можно сделать с помощью команды:

Базовая конфигурация виртуального хоста может выглядеть так:

Описание основных директив: 

  • ServerName — главный домен сайта.

  • ServerAlias — дополнительные имена.

  • DocumentRoot — путь к каталогу сайта.

  • Directory — перечень параметров доступа.

  • ErrorLog и CustomLog — файлы логов.

После внесения изменений проверьте неправильно синтаксиса конфигурации. В этом поможет команда:

Если все настроено правильно, вы увидите сообщение Syntax OK.

Активация конфигурации

После создания конфигурационного файла включите виртуальный хост. С помощью утилиты a2ensite активируйте нужный сайт:

Если какой-то сайт нужно отключить по умолчанию, выполните команду вида:

После выполнения этих команд перезапустите веб-сервер Apache:

Если хотите полностью перезапустить систему, выполните команду:

Для проверки доступности сайта в браузере введите доменное имя, которое было указано в ServerName. Если еще не настроили DNS, в файл /etc/hosts добавьте временную запись. Этот вариант подойдет для тестирования работоспособности сайта. 

Настройка файла hosts

Для сопоставления доменных имен и IP-адресов используется файл /etc/hosts. Система сначала его проверяет, затем обращается к DNS. Таким образом можно тестировать виртуальный хост в Apache HTTP Server без изменения публичных DNS-записей. Метод работает на той машине, где хранится и редактируется файл. 

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

В каждой строке файла нужно указать IP-адреса и соответствующие имена хостов. Выглядит это примерно так:

Если сайт расположен на другом сервере, нужно указать его IP:

Имя example.local должно быть таким, какое указано в директиве ServerName в конфигурации виртуального хоста Apache. 

Внесите записи и сохраните файл. Проверьте соответствие адресов и доменов:

Должен вернуться IP, который указан в /etc/hosts. Если все верно, откройте сайт в браузере:

Если все правильно настроено, сервер корректно обработать запрос в соответствии с конфигурацией. Если кеширование DNS идет через systemd-resolved, перезапустите службу:

Чтобы устройство использовала внешнее разрешение имен, после публикации DNS-записей удалите соответствующую строку из /etc/hosts

Настройка файлаНастройка файла

Тестирование конфигурации

После включения виртуального хоста проверьте корректность конфигурации, чтобы вовремя обнаружить синтаксические ошибки и проблемы. Выполните команду: 

Либо:

Если конфигурация правильная, вы увидите ответ Syntax OK. При наличии ошибок — проблемный файл и строку. Как это может выглядеть:

Evolution Managed Kafka®
Evolution Managed Kafka®
Используйте готовый кластер Apache Kafka®
Подробнее

Откройте файл и исправьте ошибку:

Затем снова выполните sudo apachectl configtest и при наличии корректного ответа от сервера примените изменения: 

Если после изменений хотите перезапустить веб-сервер, выполните: 

Если есть проблемы с доступом к сайту, проверьте логи в каталоге /var/log/apache2/. Ошибки конфигурации и выполнения команд отображаются в файле error.log:

Чтобы избежать проблем в работе сайта, также проверьте следующие моменты:

  • совпадение директивы ServerName с именем, которое указано в файле /etc/hosts;

  • Наличие каталога, указанного в DocumentRoot;

  • Наличие у пользователя достаточных прав на чтение файлов. 

Настройка SSL для виртуального хоста

Чтобы подключить защищенное соединение для сайта, настроенного в Apache через VirtualHost, нужно настроить SSL и установить сертификат.  Это можно сделать с помощью Certbot.

Установка SSL-сертификатов

Обновите список пакетов, установите Certbot и плагин для Apache:

Проверьте, что активирован модуль SSL:

Запустите процесс получения сертификата: 

Certbot проверит домен, предложит выбрать виртуальный хост, автоматически получит сертификат, добавит путь к нему и создаст конфигурацию для рабочего порта. Сертификат по умолчанию сохраняется в /etc/letsencrypt/live/домен/.

После завершения установки сертификата Certbot перезапустит веб-сервер. После повторной загрузки проверьте доступность сайта: 

Certbot также автоматически настраивает механизм продления сертификата по окончании срока годности, используя systemd-таймер или cron (в зависимости от способа установки). Проверить корректность настройки можно с помощью команды:

Если все настроено правильно, сертификат будет автоматически продлеваться.

Чтобы центр сертификации мог проверить сайт, доменное имя ресурса должно указывать на сервер по публичному IP-адресу. Также извне должен быть доступен порт 80.

Обновление конфигурации виртуального хоста для SSL

Откройте файл виртуального хоста:

Добавьте подобный блок:

Проверьте конфигурацию:

Для перенаправления HTTP-трафика на HTTPS добавьте на порту 80 в виртуальный хост следующие настройки:

Убедитесь, что в брандмауэре открыт порт 443:

Проверьте состояние службы:

Советы по безопасности и оптимизации

После настройки виртуального хоста позаботьтесь о безопасности и стабильной работе. Даем рекомендации по защите веб-сервера и оптимизации производительности. 

Защита сервера

В Ubuntu Apache запускается от имени системного пользователя www-data. Действовать от имени root с правами администратора не стоит. Проверьте, что у www-data есть необходимые полномочия без избыточности. 

Дальше проверьте список подключенных модулей: 

Есть какие-то не используются, отключите их, чтобы уменьшить поверхность потенциальной атаки. Например:

Также стоит явно задать правила доступа к служебным каталогам. Пример:

Для закрытых каталогов правило может выглядеть так: 

Желательно скрыть сведения о системе и версию Apache. Для этого в файле  /etc/apache2/conf-available/security.conf выполните следующие настройки:

После настроек примените команду: 

Дополнительные меры безопасности для снижения рисков атак: 

Мера
Команда, настройки
Для снижения рисков перебора паролей используйте fail2ban — инструмент для анализа логов и автоматической блокировки подозрительных IP-адресов после нескольких неудачных попыток входа
sudo apt install fail2ban
Если сервер доступен извне, разрешите в настройках брандмауэра только необходимые порты
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full' sudo ufw enable
Регулярно обновляйте систему, модули и пакеты инструментов для обеспечения безопасности
sudo apt update
sudo apt upgrade
Используйте для дополнительной защиты модуль mod_security
sudo apt install libapache2-mod-security2
sudo a2enmod security2
sudo systemctl reload apache2

Оптимизация производительности

За производительность Apache в Ubuntu отвечает выбранная Multi-Processing Module (MPM) модель. В основном используется mpm_event, которая подходит для большинства сценариев. Проверить свою модель можно с помощью команды:

Параметры можно настроить в /etc/apache2/mods-available/mpm_*.conf. В зависимости от объема памяти сервера укажите значения StartServers, MaxRequestWorkers и ServerLimit. 

Для оптимизации производительности через модуль mod_deflate можно включить сжатие ответов:

Например, настройка может выглядеть так: 

Для настройки заголовков кеширования статического контента (которые указывают браузеру клиента, как долго хранить файлы, сокращая количество повторных запросов) используется модуль mod_expires:

Пример настройки:

Если в конфигурации виртуального хоста для директивы AllowOverride установлено значение, отличное от None (например, All), Apache будет проверять наличие файлов .htaccess в каждом каталоге запрашиваемого пути, что может снижать производительность. Перенесите директивы из .htaccess в основную конфигурацию виртуального хоста и установите AllowOverride None.

Нагрузку на сервер и производительность можно контролировать с помощью логов /var/log/apache2/ и утилит top, htop и команды journalctl -u apache2. 

Современный подход к обработке логов и метрик

Если ваш сайт на Apache генерирует тысячи запросов в секунду, традиционный анализ логов через tail -f или top перестает быть эффективным. Для мониторинга больших нагрузок (например, при балансировке нескольких виртуальных хостов) необходима потоковая обработка данных в реальном времени.

В корпоративной среде эту задачу решает Evolution Managed Kafka от Cloud.ru — полностью управляемый кластер Apache Kafka®. Он позволяет собирать логи со всех ваших веб-серверов в единый поток, анализировать поведение пользователей без задержек и оперативно реагировать на аномалии в работе виртуальных хостов. Вы получаете готовую инфраструктуру для observability, не отвлекаясь на настройку брокеров.

Заключение

Правильно организованный виртуальный хост помогает изолировать проекты друг от друга и обеспечить безопасность соединений. Apache в Ubuntu можно настроить без стороннего ПО. После базовых настроек ограничьте права доступа для пользователей, отключите лишние модули. В процессе эксплуатации следите за обновлениями и нагрузкой на сервер. 

Продукты из этой статьи:
Иконка-Evolution Managed Kafka®
Evolution Managed Kafka®
14 апреля 2026

Вам может понравиться