Вопрос или проблема
Когда я добавляю следующую строку в /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 не поддерживается. Давайте рассмотрим детали решения этой проблемы.
Причины и решение
-
Смешение портов:
Убедитесь, что в вашем файле конфигурации Apache нет других записейNameVirtualHost
, которые используют форматы*:80
,*:81
и т.д. Ваша конфигурация, по всей видимости, уже содержитNameVirtualHost *:80
Поэтому проверьте, нет ли других определений, например:
NameVirtualHost *:*
или других записей, использующих разные порты.
Используйте следующую команду, чтобы найти все упоминания о
VirtualHost
иNameVirtualHost
:grep -lir virtualhost /etc/apache2
Это позволит вам увидеть, если где-то есть конфликты.
-
Правильное определение VirtualHost:
В вашем файлеhttpd-vhosts.conf
вы правильно определили:<VirtualHost *:80> ServerName tirengarfio.com DocumentRoot /var/www/rs3 </VirtualHost>
Однако, если есть другие
VirtualHost
, которые используют разные порты или неправильные конфигурации, это может вызвать проблемы. Убедитесь, что все ваши виртуальные хосты используют согласованный порт, если это необходимо. -
Проверка других конфигурации Apache:
Вам нужно также проверить файлы в директорияхsites-available
иsites-enabled
, если они существуют на вашем сервере. Часто конфигурации виртуальных хостов разделяются именно там, и одна из конфигураций может иметь дублирующуюся или конфликтующую настройку. -
Безопасность конфигураций:
Как было упомянуто, стоит избегать подключения примеров конфигурации напрямую из документации. Вместо этого следует скопировать и адаптировать конфигурации в ваши собственные файлы в каталоге/etc/apache2
, чтобы упростить администрирование и повысить безопасность. -
Перезагрузка Apache:
После внесения всех изменений обязательно перезапустите Apache для применения изменений:sudo systemctl restart apache2
Общие рекомендации
- Систематическое структурирование конфигураций: Разделяйте конфигурации виртуальных хостов по именам и портам.
- Проверяйте конфигурацию: Используйте команду
apachectl configtest
перед перезапуском сервера, чтобы убедиться в отсутствии ошибок конфигурации. - Документация: Регулярно обновляйте свои знания, просматривая официальную документацию Apache, чтобы быть в курсе изменений и новых функций.
Следуя этим шагам, вы сможете устранить проблему с ошибкой mixing * ports and non-* ports with a NameVirtualHost address
.