Назад | Перейти на главную страницу

Как я могу добавить виртуальный хост для обслуживания запросов на (рабочий) CNAME?

На машине AWS EC2 в моем /etc/httpd/conf/httpd.conf файл у меня была такая конфигурация сервера:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin me@me.com
    ServerName www.example.com
    DocumentRoot /var/www/html
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
    <Directory /var/www/html/zf2-tutorial/public>
    DirectoryIndex index.php
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>

Он отлично справляется с обработкой трафика «www.example.com», и когда я запрашиваю «www.example.com/Workstream», я получаю приложение, которое находится по адресу /var/www/html/Workstream.

Итак, чувствуя себя хорошо, я решил, что хочу быть красивым и иметь маршрут веб-сервера "рабочий поток.example.com "трафик на /var/www/html/Workstream (после Документация Apache VirtualHost и Примеры).

Итак, я получаю CNAME с псевдонимом соответствующей записи A - готово, работает, отлично. Затем я обратил внимание на файл httpd.conf, чтобы добавить это <VirtualHost> сразу за существующим:

<VirtualHost *:80>
    ServerAdmin me@me.com
    ServerName workstream.example.com
    DocumentRoot /var/www/html/Workstream
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
</VirtualHost>

Я сохранил правку, затем перезагрузил apache (sudo /usr/sbin/apachectl restart - не знаю, почему мой apache не там, где все остальные) и указал браузеру на "workstream.example.com" и ... получил содержимое /var/www/html. Перезагрузка вернула это предупреждение:

[предупредить] дефолт VirtualHost перекрывается на 80-м порту, первый имеет приоритет

Я такой linux noob, это больно. Что я делаю не так? Я редактирую правильный httpd.conf (используя find / -xdev 2>/dev/null -name "httpd.conf" Я вижу, что есть еще один httpd.conf по адресу /opt/railo/sys/httpd.conf)? Должно ли ServerName соответствовать тому, что я не настраивал? Мой синтаксис неверен?


Результат sudo /usr/sbin/apachectl -S является:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server www.example.com (/etc/httpd/conf/httpd.conf:1005)
         port 80 namevhost www.example.com (/etc/httpd/conf/httpd.conf:1005)
         port 80 namevhost workstream.example.com (/etc/httpd/conf/httpd.conf:1020)
Syntax OK

В NameVirtualHost *:80 директива должно быть то, что вам нужно, чтобы эта ошибка исчезла. Apachectl подхватывает это, поэтому я подозреваю, что apache не перезагружается должным образом. ... Не быть тем парнем ... но ты пробовал перезагрузка?

...

...

Альтернативой является убийство всех httpd pid, перечисленных в ps -ef и начиная?

У тебя есть NameVirtualHost *:80 (видеть "NameVirtualHost Директива") где-то в вашей конфигурации? Если нет, то он будет рассматриваться как виртуальный хост на основе IP, который игнорирует Host заголовок, отправленный браузером.

Если все запросы кэшируются одним виртуальным хостом, возможно, вам не хватает виртуального хоста по умолчанию http://httpd.apache.org/docs/2.2/vhosts/examples.html

<VirtualHost _default_:80>
   DocumentRoot /var/www/html
</VirtualHost>