Создание виртуального хоста Apach
Настройка правильного порта
Нужно настроить Apache как бэкэнд сервера Nginx, запущенный на порту 8080. Чтобы Apache использовал правильный порт, откройте файл ports:
sudo nano /etc/apache2/ports.conf
Вывод будет следующий:
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Нужно отредактировать, чтобы запустить Apache на порту 8080 и запретить прослушку 443 порта, который доступен только с локального хоста:
Listen 127.0.0.1:8080
#<IfModule ssl_module>
#Listen 443
#</IfModule>
#<IfModule mod_gnutls.c>
#Listen 443
#</IfModule>
Настройка виртуального хоста
Файлы виртуального хоста указывают фактическую конфигурацию виртуальных хостов и задают способ ответа веб-сервера Apache на запросы различных доменов.
В Apache имеется файл виртуального хоста по умолчанию с именем 000-default.conf
, который мы можем использовать в качестве исходной точки. Мы скопируем его для создания файла виртуального хоста для каждого из доменов.
Мы начнем с одного домена, настроим его, скопируем для второго домена и внесем несколько дополнительных корректировок. Конфигурация Ubuntu по умолчанию требует, чтобы каждый файл виртуального хоста имел расширение .conf
.
Создание файла виртуального хоста
Скопируйте файл для домена:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/название_домена.com.conf
Откройте новый файл в редакторе с привилегиями root
:
sudo nano /etc/apache2/sites-available/название_домена.com.conf
Без комментариев этот файл будет выглядеть примерно так:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
В файле мы настроим элементы для нашего первого домена и добавим несколько дополнительных директив. Этот раздел виртуального хоста соответствует любым запросам на порт 80, используемый по умолчанию для протокола HTTP.
Вначале нам нужно изменить директиву ServerAdmin на адрес электронной почты, доступный администратору сайта.
ServerAdmin admin@example.com
После этого нам нужно будет добавить две директивы. Директива ServerName
задает базовый домен, который должен соответствовать этому определению виртуального хоста. Скорее всего, это будет ваш домен. Вторая директива под названием ServerAlias
определяет дополнительные имена, которые должны соответствовать, как если бы они были базовыми. Это полезно для подстановки заданных вами хостов, таких как www
:
ServerName название_домена.com
ServerAlias www.название_домена.com
Помимо этого, в нашем файле виртуального хоста нужно изменить только расположение корневой директории документов для этого домена. Мы уже создали необходимую нам директорию, так что нам нужно изменить директиву DocumentRoot
и указать созданную нами директорию:
DocumentRoot /var/www/название_домена.com/public_html
После этого наш файл виртуального хоста должен выглядеть следующим образом:
<VirtualHost 127.0.0.1:8080>
# почта администратора
ServerAdmin admin@example.com
# базовый домен
ServerName example.com
# дополнительные имена
ServerAlias www.example.com
# директория сайта
DocumentRoot /var/www/название_домена.com/public_html
# логи ошибок ошибка
ErrorLog ${APACHE_LOG_DIR}/error.log
# формат логов
CustomLog ${APACHE_LOG_DIR}/access.log combined
# включаем поддержку .htaccess в директории
<Directory /var/www/название_домена.com/public_html>
# индексы опций
Options Indexes FollowSymLinks MultiViews
# указывает нужно ли читать .htaccess
AllowOverride All
# позволяет управлять доступом к директории
Order allow,deny
# разрешающие права
allow from all
</Directory>
</VirtualHost>
Активация новых файлов виртуального хоста
Мы создали файлы виртуального хоста, и теперь их нужно активировать. В Apache имеются инструменты, с помощью которых это можно сделать.
Мы используем инструмент a2ensite
для активации каждого из наших сайтов. Дополнительную информацию об этом скрипте можно найти в документации по a2ensite.
sudo a2ensite название_домена.com.conf
Отключите сайт по умолчанию, заданный в файле 000-default.conf
:
sudo a2dissite 000-default.conf
После завершения нужно перезапустить Apache
для вступления изменений в силу:
sudo systemctl restart apache2