Различные субдомены, апач, отвечающий тем же vhost

У меня есть 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

У меня нет подсказки о том, что попробовать затем, я пробовал в течение многих дней. Я был бы очень признателен за любую справку, Спасибо!

1
задан 25 January 2015 в 23:35
2 ответа

В конце концов мой друг увидел, что у меня есть опечатка в 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
0
ответ дан 4 December 2019 в 00:13

У меня есть два предложения, помимо этой проблемы

  1. Добавить ServerName с полным доменным именем хоста, на котором Apache обслуживает запрос. Это поможет вам избежать множества проблем.
  2. Если все поддомены имеют разные IP-адреса, используйте виртуализацию на основе IP, а не на основе имени.

Ваша конфигурация 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-заголовок.

1
ответ дан 4 December 2019 в 00:13

Теги

Похожие вопросы