У меня есть домен example.com
с двумя поддоменами: website.example.com
и cloud.example.com
. Я установил A-Record для них обоих на IP-адрес моего сервера.
мой сервер - это VPS с centos7 и имеет два каталога ниже /var/www/html/
для каждого из доменов:
/var/www/html/website.example.com/
содержит все файлы wordpress/var/www/html/cloud/
содержит все файлы для ownCloud.Я улучшил свой httpd.conf, чтобы он содержал:
Listen 80
Listen 81
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html/website.example.com
ServerName www.website.example.com
</VirtualHost>
NameVirtualHost *:81
<VirtualHost *:81>
DocumentRoot /var/www/html/cloud
ServerName www.cloud.example.com
</VirtualHost>
Теперь, когда я перезапускаю httpd и запускаю wget, я получаю следующие ответы:
my.vps.ip.address
-> ответ с сайта wordpressmy.vps.ip.address:80
-> ответ с сайта wordpressmy.vps.ip.address:81
-> ответ с облачного сайтаwebsite.example.com
-> ответ с сайта wordpresscloud.example.com
-> ответ с сайта wordpress.Это приводит к опыту браузера -> Когда я вхожу website.example.com
в моем браузере я попадаю на свой сайт wordpress. Но когда я вхожу cloud.example.com
Я также попадаю на свой сайт wordpress вместо сайта owncloud.
Что мне не хватает?
Вы установили свой ServerName
к www.cloud.example.com
, но попробуйте получить к нему доступ с помощью cloud.example.com
. Также вы забыли порт 81.
Либо установите его на cloud.example.com
или добавить ServerAlias cloud.example.com
.
Вам не нужно устанавливать cloud.example.com
на другом порту. Apache отлично может обрабатывать разные VirtualHosts на одном и том же порту. Просто оставьте его на 80-м порту.
Должно получиться так:
Listen 80
# Listen 81
# Just stay on port 80, don't make it more complicated for the clients
# Listen for virtual host requests on all IP addresses
# NameVirtualHost *:80
# This is not needed anymore with Apache 2.4
<VirtualHost *:80>
DocumentRoot /var/www/html/website.example.com
ServerName website.example.com
ServerAlias www.website.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/cloud
ServerName cloud.example.com
</VirtualHost>