Как настроить Apache с 3 сайтами: два имени на основе виртуальных хостов и один через IP-адрес - PullRequest
1 голос
/ 25 февраля 2020

У меня уже есть 2 сайта, связанных с доменами.

Для этого у меня есть 2 файла конфигурации в /etc/apache2/sites-available/:

<domain1>.conf
<domain2>.conf

С DocumentRoot /var/www/domain1 и DocumentRoot /var/www/domain2.

Кроме того, мне нужно настроить 3-й сайт напрямую связан с IP-адресом сервера.

Для этого я создал файл conf: IP.conf ( IP - это IP-адрес сервера):

<VirtualHost *:80>
    ServerAdmin <email>
    ServerName <IP>
    ServerAlias <IP>
    DocumentRoot /var/www/html/wordpress
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Выполнить:

sudo a2ensite <IP>.conf

И:

restart apache service.

Но это не помогает.

Не могли бы вы посоветовать, как настроить маршрутизацию?

1 Ответ

2 голосов
/ 26 февраля 2020

По умолчанию проблема Apache config всегда использует IP-адрес сервера. Так что IP.conf никогда не будет загружен.

Вам необходимо отредактировать конфигурацию Apache по умолчанию - расположенную в sites-available - чтобы внести изменения.

Глядя на свою конфигурацию, вы указывают необработанный IP-адрес для ServerName и ServerAlias, который эффективно устранит цель настройки виртуальных хостов на основе имен:

<VirtualHost *:80>
    ServerAdmin <email>
    ServerName <IP>
    ServerAlias <IP>
    DocumentRoot /var/www/html/wordpress
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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

Чтобы виртуальный хостинг на основе имени работал, вы должны использовать имя домена / хоста в вашей конфигурации. Примерно так: domain1:

<VirtualHost *:80>
    ServerAdmin <email>
    ServerName <domain1>
    ServerAlias <domain1>
    DocumentRoot /var/www/domain1
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

И это для domain2

<VirtualHost *:80>
    ServerAdmin <email>
    ServerName <domain2>
    ServerAlias <domain2>
    DocumentRoot /var/www/domain2
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Теперь для конфигурации хоста IP-адреса вы должны go в Apache каталог конфигурации - /etc/apache2/ в Debian / Ubuntu или /etc/httpd/ в CentOS / RedHat - и загляните в каталог sites-available. Там должен быть файл с именем 000-default.conf:

/etc/apache2/sites-available/000-default.conf

и внесите изменения, которые вы показываете в вашем IP.conf там. На самом базовом c уровне просто измените DocumentRoot на следующее:

DocumentRoot /var/www/html/wordpress

Затем перезапустите Apache, и он должен работать как положено.

...