要直接查看我对问题的描述,请参阅问题部分。
语境:
运行 XUbuntu 14.10 和 Apache 2.4.10。
我对 Apache 还很陌生,所以我尝试设置简单的 VH...取得了一些成功,但仍然遇到问题。我阅读了文档,但找不到我的配置出了什么问题。我想配置两个虚拟主机:我的名字和企鹅网。
配置
以下是我当前配置的简短描述(非详尽)。
/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
<VirtualHost *:80>
为了“解决”这个问题,我用我的本地 IP 地址替换了 /etc/hosts 中的环回地址。此外,我还用替换了两个文件中的VirtualHost 声明。现在运行良好!
我仍然想知道为什么 Firefox 在给定完整的环回 IP 地址时无法获得正确的索引。
抱歉,帖子太长了!
谢谢
答案1
在这种情况下,firefox 将检查您的 /etc/hosts 作为名称解析的最后一个选项。
您可以尝试这个解决方法。
- 打开 Firefox 并输入
about:config
URL。 - 搜索
keyword.enabled
并将其设置为 False。 - 确保在 /etc/nsswitch.conf 中,
hosts
条目具有files
作为第一个选项。