
Чтобы увидеть мое описание моей проблемы напрямую, см.Проблемачасть.
Контекст:
Работает под управлением XUbuntu 14.10 и Apache 2.4.10.
Я новичок в Apache, поэтому пытаюсь настроить простой VH... с некоторым успехом, но проблема все еще есть. Я прочитал документацию и не могу найти, что не так с моей конфигурацией. Я хотел бы настроить два виртуальных хоста:моеимя.comиpenguin.com.
Конфигурация
Вот краткое описание (не исчерпывающее) моей текущей конфигурации.
/etc/apache2/apache2.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options +Indexes
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html/flashlight/>
AllowOverride All
</Directory>
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/>
AuthName "Mon domaine"
AuthType Basic
AuthUserFile /etc/apache2/users.passwd
Options +Indexes
Options FollowSymLinks
AllowOverride None
Require valid-user
</Directory>
</VirtualHost>
/etc/apache2/sites-enabled/myname.conf
<VirtualHost 127.0.0.2:80>
ServerName myname.com
ServerAlias www.myname.com
DocumentRoot /var/www/html/myname
<Directory /var/www/html/myname>
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
/etc/apache2/sites-enabled/penguin.conf
<VirtualHost 127.0.0.3:80>
ServerName penguin.com
ServerAlias www.penguin.com
DocumentRoot /var/www/html/penguin
<Directory /var/www/html/penguin>
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Оба виртуальных хоста были включены, как описано в документации Apache, с помощью a2ensite
. Apache был перезапущен с помощью /etc/init.d/apache2 graceful
. В /var/www/html/penguin
и /var/www/html/myname
я создал простые index.html
файлы, чтобы проверить, нахожусь ли я на виртуальном хосте или нет.
Наконец, я изменил /etc/hosts
так, чтобы он содержал:
127.0.0.1 localhost
127.0.0.2 myname.com
127.0.0.3 penguin.com
Чтобы проверить конфигурацию, я запускаю apachectl -S
и вижу:
VirtualHost configuration:
127.0.0.3:80 penguin.com (/etc/apache2/sites-enabled/penguin.conf:1)
127.0.0.2:80 myname.com (/etc/apache2/sites-enabled/myname.conf:1)
*:80 www.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
Проблема
Теперь, когда у меня настроены два виртуальных хоста, я пытаюсь получить к ним доступ. Когда я пытаюсь получить доступ penguin.com
в моем браузере (Firefox), я вижу вместо /var/www/html/index.html
. /var/www/html/penguin/index.html
Мне приходится явно писать, penguin.com/index.html
чтобы увидеть правильную страницу индекса.
Но когда я обращаюсь myname.com
, отображается правильный индекс!?
Более того, когда я захожу на эти сайты через Chrome, эта проблема не возникает, и я сразу вижу нужную страницу индекса.
Проблема с моей конфигурацией Apache? Или вы думаете, что это касается только Firefox (может быть, я неправильно читаю /etc/hosts
)?
РЕДАКТИРОВАТЬ
Забыл упомянуть, что при доступе к странице по IP (127.0.0.2/3) у меня та же проблема в Firefox (работает только 127.0.0.2).
С wget
, я получаю файлы, как и ожидалось. Так что я предполагаю, что это может быть связано с браузерами, а не с конфигурацией Apache.
ПРАВКА2
Чтобы "решить" проблему, я заменил адреса обратной связи в /etc/hosts на мой локальный IP-адрес. Кроме того, я заменил декларацию VirtualHost на <VirtualHost *:80>
в обоих файлах. Теперь все работает отлично!
Я все еще удивляюсь, почему Firefox не смог получить правильный индекс, имея полный IP-адрес обратной связи.
Извините, за длинную статью !
Спасибо
решение1
В этом случае Firefox проверит ваш /etc/hosts в качестве последнего варианта для разрешения имен.
Вы можете попробовать этот обходной путь.
- Откройте Firefox и введите
about:config
URL. - Найдите
keyword.enabled
и установите значение False. - Убедитесь, что в /etc/nsswitch.conf
hosts
запись имеетfiles
первый параметр.