2015-03-31 2 views
0

Как задокументированы Apache под Using Name-based Virtual Hosts:Продвижение конкретного пользователя Apache VirtualHost по умолчанию

Если соответствующий виртуальный хост не найден, то первым в списке виртуальных хостов, который соответствует IP-адрес будет использоваться.

Как следствие, первым указанным виртуальным хостом является виртуальный хост по умолчанию.

В настоящее время шаблон на /var/cpanel/templates/apache2_4/main.default генерирует такой умолчанию VirtualHost (за IP-адрес) с DocumentRoot [% serverroot %]/htdocs.

Вместо этого мы хотели бы получить VirtualHost, который был создан для определенного пользователя по умолчанию. Каков наилучший/рекомендуемый способ достижения этого?

Мое настоящее мышление состоит в том, чтобы разместить директиву (скомпилированный) VirtualHost пользователя в /usr/local/apache/conf/includes/pre_virtualhost_2.conf, но это, очевидно, не будет управляться WHM при изменении конфигурации пользователя.

Есть ли лучший способ?

+0

Я просто попробовал «ServerAlias ​​*» и жестоко обнаружил, что эта директива соответствует ** действительно ** что угодно, включая предыдущие объявленные виртуальные хосты. На секунду я подумал, что это работает! – JohnKiller

+0

«Вместо этого мы хотели бы, чтобы VirtualHost был создан для определенного пользователя, который будет по умолчанию». Как запрос связывается с «пользователем»? Итак, вы говорите, что у вас есть HTTP-запросы для доменов URL, у которых нет виртуальных хостов, и вы хотите, чтобы их перенаправляли к определенному пользователю? Итак, у вас должен быть пользователь 1to1 с IP-адресом? В противном случае это не имеет смысла. – spinkus

+0

@ S.Pinkus: Как это не имеет смысла? Я хочу, чтобы все веб-запросы, независимо от имени хоста (кроме переопределенного более конкретным правилом), направлялись к определенному пользователю. Для меня это довольно просто! В самом деле, это то, что описывает цитата из документации Apache. – eggyal

ответ

0

Хорошо, так это то, что я в конечном итоге делает:

  1. Скопировано /var/cpanel/templates/apache2_4/main.default в /var/cpanel/templates/apache2_4/main.local.

  2. Отредактированный вновь созданную копию, чтобы удалить VirtualHost директивы по умолчанию (я вставил [%- IF 0 %] перед строкой 344 и [% END -%] до линии 385).

  3. Отредактировано /var/cpanel/conf/apache/primary_virtual_hosts.conf так, чтобы имя желаемого узла по умолчанию было задано для желаемых IP-адресов.

  4. Ran /scripts/rebuildhttpdconf.

  5. Подтверждена вручную /usr/local/apache/conf/httpd.conf.

  6. Изящно перезапущенный Apache.

1

В целом VirtualHost s соответствует записям DNS, включая подстановочные знаки.

Ваша ситуация кажется мне, что вы активируете новый сайт, а пока DNS готов, хостинг пока недоступен, поэтому вы хотите временно отображать конкретный VirtualHost.

У меня была аналогичная проблема в прошлом, и решил ее, создав .htaccess по умолчанию VirtualHost, который перенаправляет на сайт, который я хочу.

Это также имеет то преимущество, что пользователь явно просматривает реальное имя хоста в своем браузере.

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

+0

К сожалению, это не сработает в нашей ситуации: сайт, обслуживаемый желаемым «по умолчанию» VirtualHost, определяет контент, который должен быть подан из запрошенного имени хоста, - перенаправление потеряет эту информацию (в то время как один может отправить его обслуживаемому веб-сайт, например, с помощью параметра querystring, возникающий UX будет неприемлемым для этого проекта). – eggyal

0

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

0

Создайте .htaccess, который проксирует все запросы обратно на localhost, но на внутренний порт. Затем добавьте директиву Listen для нового порта и VirtualHost для этого порта, который по умолчанию вам нужен.

Я должен упомянуть, что это уродливо, но я думаю, что он удовлетворяет ваши потребности.

0

В настоящее время мы используем схему, где мы сначала включить конкретный по умолчанию файла ВХост конфигурации, например, так (то есть до любых определения ВХоста):

Include conf.d/vhost.d/default.conf.first 
Include conf.d/vhost.d/*.conf 

Таким образом ВХост определен в conf.d/vhost.d/default.conf.first всегда первый.

Смежные вопросы