У меня есть VPS в Цифровом Океане, рабочей человечности 14.04 и апачских 2.4.7, в DNS также управляют, ДЕЛАЮТ.
У меня есть один домен, давайте назовем его thedomain.com, я пытался настроить 3 субдомена наряду с основным доменом (thedomain.com, calis.thedomain.com, orlybg.thedomain.com, fubar.thedomain.com).
Я не смог правильно настроить virtualhosts своего апача в браузере, неважно, к тому, какой домен/субдомен, я иду, я всегда отвечает тот же vhost (я могу сказать апачскими журналами), и otput в браузере.
Основной домен и эти 3 субдомена, записи www являются CNAME, вот мой zonefile:
$ORIGIN thedomain.com.
$TTL 1800
thedomain.com. IN SOA ns1.digitalocean.com. hostmaster.thedomain.com. 1422028092 10800 3600 604800 1800
thedomain.com. 1800 IN NS ns1.digitalocean.com.
thedomain.com. 1800 IN NS ns2.digitalocean.com.
thedomain.com. 1800 IN NS ns3.digitalocean.com.
thedomain.com. 1800 IN A 104.236.80.93
www.thedomain.com. 1800 IN CNAME thedomain.com.
orlybg.thedomain.com. 1800 IN A XXX.XXX.XX.XX
fubar.thedomain.com. 1800 IN A XXX.XXX.XX.XX
calis.thedomain.com. 1800 IN A XXX.XXX.XX.XX
У меня есть основной хост и эти 3 субдомена, поскольку 4 разделил virtualhost файлы, мне включили эти 3:
calis.thedomain.com.conf
<VirtualHost *:80>
ServerName calis.thedomain.com
DocumentRoot /var/www/html/calis
<Directory /var/www/html/calis>
# enable the .htaccess rewrites
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error_calis.log
CustomLog ${APACHE_LOG_DIR}/access_calis.log combined
</VirtualHost>
thedomain.com.conf
<VirtualHost *:80>
ServerName thedomain.com
DocumentRoot /var/www/html/thedomain
<Directory /var/www/html/thedomain>
# enable the .htaccess rewrites
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
orlybg.thedomain.com.conf
<VirtualHost *:80>
ServerName orlybg.thedomain.com
DocumentRoot /var/www/html/myproject
<Directory /var/www/html/myproject>
# enable the .htaccess rewrites
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error_orlybg.log
CustomLog ${APACHE_LOG_DIR}/access_orlybg.log combined
</VirtualHost>
Я использую a2ensite для включения vhosts, у меня есть включенный vhost_alias.load, я перезапускаю/перезагружаю апача несколькими способами и никакую удачу. Я вижу tha, директива NameVirtualHost не используется в моей версии апача, я раньше имел conf файл с ServerName localhost для не наблюдения, "не Мог надежно определить полностью определенное доменное имя сервера" ошибка, но я отключил его.
apachectl-S
VirtualHost configuration:
*:80 is a NameVirtualHost
default server calis.thedomain.com (/etc/apache2/sites-enabled/calis.thedomain.com.conf:1)
port 80 namevhost calis.thedomain.com (/etc/apache2/sites-enabled/calis.thedomain.com.conf:1)
port 80 namevhost thedomain.com (/etc/apache2/sites-enabled/thedomain.com.conf:1)
port 80 namevhost orlybg.thedomain.com (/etc/apache2/sites-enabled/orlybg.thedomain.com.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
У меня нет подсказки о том, что попробовать затем, я пробовал в течение многих дней. Я был бы очень признателен за любую справку, Спасибо!
В конце концов мой друг увидел, что у меня есть опечатка в vhosts, и добавил несколько записей в / etc / hosts с доменом и IP-адресом сервера
thedomain.com XXX.XXX.XX.XX
www.thedomain.com XXX.XXX.XX.XX
orlybg.thedomain.com XXX.XXX.XX.XX
calis.thedomain.com XXX.XXX.XX.XX
У меня есть два предложения, помимо этой проблемы
ServerName
с полным доменным именем хоста, на котором Apache обслуживает запрос. Это поможет вам избежать множества проблем. Ваша конфигурация VirtualHost
выглядит идеальной, но на самом деле это не так. Не похоже, что это создает проблему.
В документе Apache указано, что .
Если совпадение ServerName или ServerAlias не найдено в наборе виртуальные хосты, содержащие наиболее подходящий IP-адрес и комбинация портов, затем первый указанный виртуальный хост, который соответствует этому будет использоваться.
Обычно разные разделы VirtualHost
выбираются на основе HTTP-заголовка Host:
, и если нет раздела VirtualHost
, соответствующего хосту :
, тогда первый раздел будет считаться значением по умолчанию и будет обслуживаться. И какой переход зависит от того, как вы делаете запрос в браузере. Вы проверяете его с помощью команды curl
, чтобы узнать, что вызывает проблему, как показано ниже.
$ curl -L http://localhost -H 'Host: thedomain.com'
Это должно вернуть документы из / var / www / html / thedomain
.
$ curl -L http://localhost -H 'Host: orlybg.thedomain.com'
Это должен возвращать документы из / var / www / html / myproject
.
Здесь с параметром -H
мы можем отправить настраиваемый заголовок http, поэтому здесь мы используем его для отправки Хост:
HTTP-заголовок.