Apache: VirtualHost :80 — смешивание портов и не-* портов с адресом NameVirtualHost не поддерживается

Вопрос или проблема

Когда я добавляю следующую строку в /etc/apache2/apache2.conf, я получаю ошибку ниже после перезапуска apache:

Include
/usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-vhosts.conf

[Пн Июн 14 12:16:47 2010] [ошибка]
VirtualHost *:80 — смешивание * портов и
не-* портов с адресом NameVirtualHost
не поддерживается, продолжаем
с неопределенными результатами [Пн Июн 14
12:16:47 2010] [предупреждение] NameVirtualHost
*:80 не имеет VirtualHosts

Вот мой файл httpd-vhosts.conf:

#
# Используйте виртуальный хостинг на основе имен.
#
NameVirtualHost *:80

#
# Пример VirtualHost:
# Практически любая директива Apache может быть размещена в контейнере VirtualHost.
# Первый раздел VirtualHost используется для всех запросов, которые не
# соответствуют ServerName или ServerAlias в любом блоке <VirtualHost>.

<VirtualHost *:80>
   ServerName tirengarfio.com
   DocumentRoot /var/www/rs3

   <Directory /var/www/rs3>
      AllowOverride All
      Options MultiViews Indexes SymLinksIfOwnerMatch
      Allow from All
   </Directory>

   Alias /sf /var/www/rs3/lib/vendor/symfony/data/web/sf
   <Directory "/var/www/rs3/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
   </Directory>
</VirtualHost>

Есть идеи, что вызывает это?

В вашем http.conf есть еще одна запись NameVirtualHost, которая вызывает эту проблему. Найдите запись, похожую на NameVirtualHost *:*, и удаление этой записи должно устранить ошибку.

Кроме того, для справки, вероятно, не лучшая идея включать httpd-vhosts.conf напрямую из примерной документации, так как в зависимости от прав доступа это может быть не особенно безопасно. Это также не то место, где другие люди ожидали бы его увидеть, хотя, если вы единственный, кто управляет сервером, это становится менее важным.

Вероятно, есть другой VirtualHost, который мешает определению, которое вы пытаетесь сделать. Он может быть определен в sites-available, sites-enabled или apache2.conf. Определение VHost должно выглядеть следующим образом:

NameVirtualHost *:80 
NameVirtualHost *:81

<VirtualHost *:80>
# ...
</VirtualHost>

<VirtualHost *:81>
# ...
</VirtualHost>

Лучше, если вы скопируете конфигурационный файл в каталог /etc. В любом случае, поищите (см. ниже), есть ли другая директива virtualhost в любых конфигурационных файлах apache.

grep -lir virtualhost /etc/apache2

(Я полагаю, что все конфигурационные файлы apache находятся в каталоге /etc/apache2)

Ответ или решение

Проблема, с которой вы столкнулись, связана с неправильным определением виртуальных хостов в конфигурации Apache. Ошибка, о которой идет речь, гласит:

VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results

Это сообщение об ошибке указывает на то, что вы пытаетесь использовать смешение виртуальных хостов с именами, присвоенными разным портам, что в Apache не поддерживается. Давайте рассмотрим детали решения этой проблемы.

Причины и решение

  1. Смешение портов:
    Убедитесь, что в вашем файле конфигурации Apache нет других записей NameVirtualHost, которые используют форматы *:80, *:81 и т.д. Ваша конфигурация, по всей видимости, уже содержит

    NameVirtualHost *:80

    Поэтому проверьте, нет ли других определений, например:

    NameVirtualHost *:*

    или других записей, использующих разные порты.

    Используйте следующую команду, чтобы найти все упоминания о VirtualHost и NameVirtualHost:

    grep -lir virtualhost /etc/apache2

    Это позволит вам увидеть, если где-то есть конфликты.

  2. Правильное определение VirtualHost:
    В вашем файле httpd-vhosts.conf вы правильно определили:

    <VirtualHost *:80>
      ServerName tirengarfio.com
      DocumentRoot /var/www/rs3
    </VirtualHost>

    Однако, если есть другие VirtualHost, которые используют разные порты или неправильные конфигурации, это может вызвать проблемы. Убедитесь, что все ваши виртуальные хосты используют согласованный порт, если это необходимо.

  3. Проверка других конфигурации Apache:
    Вам нужно также проверить файлы в директориях sites-available и sites-enabled, если они существуют на вашем сервере. Часто конфигурации виртуальных хостов разделяются именно там, и одна из конфигураций может иметь дублирующуюся или конфликтующую настройку.

  4. Безопасность конфигураций:
    Как было упомянуто, стоит избегать подключения примеров конфигурации напрямую из документации. Вместо этого следует скопировать и адаптировать конфигурации в ваши собственные файлы в каталоге /etc/apache2, чтобы упростить администрирование и повысить безопасность.

  5. Перезагрузка Apache:
    После внесения всех изменений обязательно перезапустите Apache для применения изменений:

    sudo systemctl restart apache2

Общие рекомендации

  • Систематическое структурирование конфигураций: Разделяйте конфигурации виртуальных хостов по именам и портам.
  • Проверяйте конфигурацию: Используйте команду apachectl configtest перед перезапуском сервера, чтобы убедиться в отсутствии ошибок конфигурации.
  • Документация: Регулярно обновляйте свои знания, просматривая официальную документацию Apache, чтобы быть в курсе изменений и новых функций.

Следуя этим шагам, вы сможете устранить проблему с ошибкой mixing * ports and non-* ports with a NameVirtualHost address.

Оцените материал
Добавить комментарий

Капча загружается...