VirtualHost всегда возвращает хост по умолчанию с Apache на Ubuntu 14.04
я пытаюсь настроить виртуальный хост помимо default localhost
.
Всякий раз, когда я пытаюсь вызвать мой виртуальный хост http://test
Я получаю файл индекса Apache2 по умолчанию, который находится в каталоге http://localhost
. Кроме того, apache возвращает эту страницу еще после отключения (a2dissite
) оба файла VirtualHost перезагружают apache (service apache2 reload
).
что может пойти не так, что виртуальный хост не работает?
конфигурация:
моя структура каталогов следующее:
/var/www/html # Default localhost dir
/var/www/html7index.html # Apache2 default index
/var/www/test # HTML dir for the virtual host
/var/www/test/index.html # My "website"
контент /etc/hosts
:
127.0.0.1 localhost
127.0.1.1 Laptop
127.0.0.1 test
содержимое каталога /etc/apache2/sites-available
:
000-default.conf
default-ssl.conf
test.conf
000-default.conf
:
<VirtualHost localhost:80>
ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
test.conf
:
<VirtualHost test:80>
ServerAdmin test@localhost
ServerName test
NameVirtualHost test
ServerAlias test
DocumentRoot /var/www/test
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
11 ответов
я столкнулся с этой проблемой, и оказалось, что мне пришлось отключить виртуальный хост по умолчанию.
sudo a2dissite 000-default.conf
tl; dr: называют его судо: sudo service apache2 reload
похоже на поведение service apache2 reload
обманул меня. См. следующий журнал:
user@Laptop:/etc/apache2/sites-available$ sudo a2ensite test.conf
Enabling site test.
To activate the new configuration, you need to run:
service apache2 reload
user@Laptop:/etc/apache2/sites-available$ service apache2 reload
* Reloading web server apache2 *
user@Laptop:/etc/apache2/sites-available$
попытаться достичь http://test
: не работает
user@Laptop:/etc/apache2/sites-available$ sudo service apache2 reload
* Reloading web server apache2 *
user@Laptop:/etc/apache2/sites-available$
попытаться достичь http://test
: работающего
Итак, найдите разницу! Дело в том, что я думал, что он будет перезагружен правильно в первую очередь. В файлах журнала также нет записей. Вызывая его с sudo
помогло. Это жук?
просто указывая на это, что может быть очевидно для опытных пользователей, но не так много, если ваш первый таймер.
убедитесь, что конфигурация, которую вы используете в /sites-enabled
заканчивается .conf
как и ожидалось в вашем apache2.conf
Это была моя проблема и он ее исправил.
если вы уже пробовали следующее:
1. Проверено разрешение корневой и родительской папки документа.
2. a2dissite 000-по умолчанию и т. д.
3. Перезапущен apache с помощью службы sudo apache2 reload
И он все еще не работает, тогда сделайте следующее:
1. Включить ведение журнала отладки:
vi /etc/apache2/apache2.conf
LogLevel debug
2. Перезапустите apache2 и контролируйте журналыsudo service apache2 restart
tail -f /var/log/apache2/*.log
3. Обратите внимание, если IP-адрес сервера отображается в журналах, как ожидалось:
==> в /var/журнал/apache2 не/other_vhosts_access.бревно==
Вы заметите, что вместо xxx.xx.xx.xx: 80 как типичный IP-адрес
У меня есть некоторые FQDN, такие как " ip-xxx-xx-xx-xx.ЕС-Запад-2.вычислить.внутренний: 80"
Я использую AWS Elastic IP для создания фиксированного IP-адреса для моего веб-сервера Amazon EC2.
4. Проверьте голову ваших виртуальных хостов .файл conf
<VirtualHost 127.0.0.1:80 11.22.33.44:80>
# Added from nessus to make more secure
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
ServerName mydomain.com
...
OK Итак, что мы видим здесь, мы говорим Apache, чтобы обслуживать этот vhost для запросов от 127.0.0.1 или 11.22.33.44 на порту 80. Но сервер не видит эти IPs, как он получает, это странное FQDN, и поэтому он никогда не совпадает! Эврика!
устранение:
Добавьте *: 80 в тег VirtualHost, чтобы он выглядел так:
<VirtualHost 127.0.0.1:80 11.22.33.44:80 *:80>
И перезапустите apache. Надеюсь, это поможет. Могут быть и другие причины, но если это причина вашей проблемы, то пришло время расслабиться, выпить чашечку чая и расслабиться! Если нет, то я надеюсь, что вы найдете решение.
PS. Не забудьте положить ваши журналы назад, чтобы предупредить, а не отлаживать!
Я просмотрел все эти решения, и ни одно из них не сработало. Затем я решил вернуться и проверить apache2.файл conf. Я обнаружил, что строка для включения файлов conf с поддержкой сайтов была закомментирована по умолчанию. Раскомментировав строку и перезапустив apache, она исправила мою проблему (она была близка к концу файла):
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
это сводит меня с ума я проверил мой .conf файлы снова и снова все было абсолютно правильно определено. Я закончил на этом посте, попробовал команды a2ensite и a2dissite в качестве sudoer, перезапустив apache, все еще приземляясь на странице приветствия apache по умолчанию, как будто apache никогда бы не отключил сайт по умолчанию или не взял мой новый виртуальный хост на борту.
оказывается, я пытался перезапустить apache без использования sudo...
service apache2 restart
использовать
sudo service apache2 restart
Если вы сохраняете значение по умолчанию с*: 80; *.443 убедитесь, что он находится внизу - поэтому переименуйте 000-default в zzz-default
Это укусило меня не один раз; иногда я бы включил с sudo
- иногда я бы не стал.
Ubuntu 14.04, похоже, отображает одно и то же сообщение в любом случае. При движении со скоростью 100 миль в час, иногда вы пропустите sudo
или два.
симптом нового веб-сайта по умолчанию обратно в неправильный каталог был моей единственной подсказкой, что включение никогда не происходило. Я бы сказал, что это ошибка.
Он должен по крайней мере предупредить, если команда не казнен!!!
для меня он начал работать после перезагрузки apache с: sudo service apache2 reload. И нажав ctrl + F5 на http:/test - ...
Я видел, как это происходит при использовании полного доменного имени (FQDN) в файле /etc/hosts, который совпадает с сайтом, к которому я пытался подключиться. Чтобы решить эту проблему, мне пришлось переименовать FQDN во что-то другое, чем одно из моих значений VirtualHost ServerName.
другими словами, если мой/etc / hostname был:
apple
и в моих/etc / хостах у меня было:
192.168.54.34 apple.example.com apple
и в моем /etc/apache2/sites-enabled / apple.пример.com.conf I имел:
<VirtualHost *:80>
ServerAdmin blah@apple.example.com
ServerName apple.example.com
DocumentRoot /var/www/apple.example.com
DirectoryIndex index.html index.php
</VirtualHost>
apple.example.com будет принято 000-default.conf, потому что он также указан в файле /etc/hosts. Чтобы решить эту проблему, я просто изменил FQDN моего сервера следующим образом в файле/etc / hostname:
server1
и /etc/hosts-файл:
192.168.54.34 server1.example.com server1
мой случай на Apache 2.4 проблема была решена путем добавления ниже настройки в конфигурацию виртуального хоста:
Listen 80
Так что настройки что-то вроде:
Listen 80
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName testsite.com
ServerAlias www.testsite.com
DocumentRoot /var/www/testsite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>