04 октября 2026 г. · by Alex M.
Apache2 — один из самых зрелых и популярных веб-серверов в мире. Он используется миллионами сайтов и поддерживает богатую экосистему модулей. Если у вас есть VPS NVMe и вы хотите разместить несколько сайтов на одном сервере, функция Virtual Hosts позволяет это сделать элегантно и без лишних затрат. В этом руководстве мы пройдём весь путь от установки до настройки безопасности на Ubuntu 22.04.
Virtual Hosts (виртуальные хосты) позволяют запускать несколько сайтов на одном сервере с одним IP-адресом, каждый с собственным доменом, конфигурацией и директорией файлов. Например, на одном VPS SSD можно одновременно размещать site1.md, site2.md и blog.company.com.
Существует два основных типа:
В этом руководстве мы сосредоточимся на name-based virtual hosts, которые подходят для большинства production-сценариев.
Перед началом убедитесь, что у вас есть:
sudoЕсли у вас ещё нет сервера, запустите VPS NVMe от CLIQHOST — готов к работе за несколько минут.
Подключитесь к серверу по SSH и обновите список пакетов:
sudo apt update && sudo apt upgrade -y
Установите Apache2:
sudo apt install apache2 -y
Проверьте статус службы:
sudo systemctl status apache2
Если всё в порядке, вы увидите active (running). Включите автозапуск при перезагрузке:
sudo systemctl enable apache2
Если вы используете UFW, разрешите HTTP и HTTPS трафик:
sudo ufw allow 'Apache Full'
sudo ufw status
Теперь, если открыть IP сервера в браузере, должна появиться стандартная страница Apache2.
По соглашению каждый сайт имеет собственную директорию в /var/www/. Создадим структуру для двух демо-сайтов:
sudo mkdir -p /var/www/site1.md/public_html
sudo mkdir -p /var/www/site2.md/public_html
Назначьте владельца текущему пользователю:
sudo chown -R $USER:$USER /var/www/site1.md/public_html
sudo chown -R $USER:$USER /var/www/site2.md/public_html
Установите правильные права доступа:
sudo chmod -R 755 /var/www/site1.md
sudo chmod -R 755 /var/www/site2.md
Создайте тестовые HTML-страницы:
nano /var/www/site1.md/public_html/index.html
Пример содержимого:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Site1.md</title>
</head>
<body>
<h1>Добро пожаловать на site1.md!</h1>
<p>Apache2 Virtual Host работает корректно.</p>
</body>
</html>
Повторите для site2.md.
Apache2 хранит конфигурации сайтов в /etc/apache2/sites-available/. Создадим конфигурацию для первого сайта:
sudo nano /etc/apache2/sites-available/site1.md.conf
Полное содержимое:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName site1.md
ServerAlias www.site1.md
DocumentRoot /var/www/site1.md/public_html
<Directory /var/www/site1.md/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1.md-error.log
CustomLog ${APACHE_LOG_DIR}/site1.md-access.log combined
</VirtualHost>
Создайте конфигурацию для второго сайта:
sudo nano /etc/apache2/sites-available/site2.md.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName site2.md
ServerAlias www.site2.md
DocumentRoot /var/www/site2.md/public_html
<Directory /var/www/site2.md/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site2.md-error.log
CustomLog ${APACHE_LOG_DIR}/site2.md-access.log combined
</VirtualHost>
Активируйте новые сайты и отключите стандартный (по желанию):
sudo a2ensite site1.md.conf
sudo a2ensite site2.md.conf
sudo a2dissite 000-default.conf
Проверьте синтаксис конфигурации:
sudo apache2ctl configtest
Должно появиться Syntax OK. Перезагрузите Apache2:
sudo systemctl reload apache2
Apache2 поставляется с богатым набором модулей. Наиболее полезные для production-сервера:
# Модуль перезаписи URL (необходим для WordPress, Joomla и др.)
sudo a2enmod rewrite
# Модуль сжатия GZIP
sudo a2enmod deflate
# Модуль HTTP-заголовков (безопасность)
sudo a2enmod headers
# Модуль кэширования
sudo a2enmod cache cache_disk
sudo systemctl restart apache2
rewrite?Без mod_rewrite ЧПУ WordPress, правила .htaccess и SEO-friendly URL не будут работать. Директива AllowOverride All позволяет Apache2 читать файлы .htaccess из директории сайта.
Веб-сервер, доступный из интернета, требует hardening. Вот ключевые настройки.
Отредактируйте основной файл безопасности:
sudo nano /etc/apache2/conf-available/security.conf
Установите:
ServerTokens Prod
ServerSignature Off
TraceEnable Off
Если в директории нет index.html или index.php, Apache2 может показать её содержимое — это уязвимость. Убедитесь, что в конфигурации Virtual Host указано:
Options -Indexes
В файл Virtual Host или .htaccess:
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
Для расширенной защиты сервера наш сервис администрирования серверов берёт на себя настройку и мониторинг.
Каждый современный сайт должен работать по HTTPS. Установите Certbot:
sudo apt install certbot python3-certbot-apache -y
Получите бесплатный SSL-сертификат:
sudo certbot --apache -d site1.md -d www.site1.md
Certbot автоматически изменит файл Virtual Host и настроит перенаправление HTTP → HTTPS. Проверьте автоматическое продление:
sudo certbot renew --dry-run
Если вам нужен коммерческий SSL-сертификат с проверкой организации (OV) или расширенной проверкой (EV), CLIQHOST предлагает полный ассортимент.
Apache2 поддерживает три MPM-модуля: prefork, worker и event. Для максимальной производительности с PHP-FPM используйте event:
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
Добавьте в конфигурацию Virtual Host или .htaccess:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/html text/css
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE image/svg+xml application/xml
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
Логи необходимы для отладки и мониторинга. Каждый Virtual Host имеет собственные файлы логов:
# Просмотр логов ошибок в реальном времени
sudo tail -f /var/log/apache2/site1.md-error.log
# Просмотр логов доступа
sudo tail -f /var/log/apache2/site1.md-access.log
Для автоматической ротации логов Apache2 использует logrotate. Файл конфигурации находится по адресу /etc/logrotate.d/apache2.
| Команда | Описание |
|---|---|
sudo systemctl start apache2 |
Запустить службу |
sudo systemctl stop apache2 |
Остановить службу |
sudo systemctl restart apache2 |
Полный перезапуск |
sudo systemctl reload apache2 |
Перезагрузить конфигурацию без простоя |
sudo a2ensite name.conf |
Активировать Virtual Host |
sudo a2dissite name.conf |
Деактивировать Virtual Host |
sudo a2enmod module |
Активировать модуль |
sudo a2dismod module |
Деактивировать модуль |
sudo apache2ctl configtest |
Проверить синтаксис конфигурации |
sudo apache2ctl -M |
Список активных модулей |
Частые причины: неверные права на директории, Options -Indexes без index.html, или AllowOverride None вместо All. Проверьте:
ls -la /var/www/site1.md/public_html
sudo apache2ctl configtest
Проверьте, правильно ли указаны ServerName и ServerAlias, и направлен ли DNS домена на IP сервера.
Посмотрите логи:
sudo journalctl -xe | grep apache2
sudo tail -50 /var/log/apache2/error.log
sudo ss -tlnp | grep :80
Если Nginx уже работает на порту 80, нужно остановить одну из служб или перевести Apache2 на другой порт.
Apache2 с Virtual Hosts — надёжное и гибкое решение для размещения нескольких сайтов на одном сервере. Вы прошли весь путь: установку, настройку Virtual Hosts, активацию ключевых модулей, защиту сервера, установку SSL и оптимизацию производительности.
Для стабильной работы этой конфигурации изучите наши предложения VPS NVMe и выделенные серверы — гарантированная производительность, техническая поддержка 24/7 и современная инфраструктура.
Есть вопросы или нужна помощь с настройкой? Свяжитесь с командой CLIQHOST или найдите больше технических руководств в нашем блоге.
Real reviews from customers who trust CLIQHOST for performance, reliability and expert technical support.
"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."
"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."
"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."