Apache虚拟主机解析缓慢

38

我终于成功配置了httpd.conf来满足我的虚拟主机需求。这是httpd.conf文件的相关部分:

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /Applications/XAMPP/htdocs/
</VirtualHost>

<VirtualHost *:80>
  ServerName test.local
  DocumentRoot /Applications/XAMPP/htdocs/test/
</VirtualHost>

<VirtualHost *:80>
  ServerName work.local
  DocumentRoot /Applications/XAMPP/htdocs/work/
</VirtualHost>

当我访问本地主机上的任何东西(例如http://localhost/phpmyadmin),一切都非常快。 但每当我访问test.local或work.local(或其他我配置的),它会花费10-15秒钟进行查找。后续请求被正确处理,并且非常快,但在大约一分钟左右的不活动时间后,它必须再次进行查找。

这是我的/etc/hosts文件

127.0.0.1       localhost
255.255.255.255 broadcasthost
#::1             localhost
fe80::1%lo0     localhost

# Virtualhosts
127.0.0.1       test.local     work.local    yii.local

我该如何解决这个令人烦恼的问题?

5个回答

84

将您的虚拟主机添加到第一行:

127.0.0.1       localhost test.local work.local yii.local

然后删除最后一行。

那就完成了。你的vhosts现在是localhost的别名。在多个行中使用相同的IP地址并不是一个好主意,这只会混淆DNS缓存。


1
谢谢,看起来这解决了我的问题! - Leonardo Rossi
我总是错过了第一个本地主机(因为我忽略了文件的那部分)。合并它确实有所帮助。 - Eddie Monge Jr
3
天啊,这太棒了,真是救了我一命!以前本地开发时等待本地虚拟主机缓慢加载的时间不容小觑,但现在明显快了三分之一!谢谢你! - Antony Sastre
刚刚尝试了上述方法,并将我的虚拟主机添加到第一行,效果非常显著! - intheusa
你差不多节省了我一半的生命时间。兄弟,爱你啊。我要给你所有的问题点赞。 - aBhijit

6
我为此做出的改变是编辑httpd-vhosts.conf文件,并将所有实例更改为:
<VirtualHost *:80>

至:

<VirtualHost 0.0.0.0:80>

之前解析主机需要2-5秒钟,现在是即时的。我不需要修改我的hosts文件中站点的顺序。这只是让它使用ipv4而不是你可能根本不使用的ipv6。


5

这就是为什么花了我那么久的原因!!! 谢谢 (顺便说一句: 我在Win上使用Firefox) - Enriqe

0

同时,在httpd.conf文件中设置ServerName的IP地址对我也起了作用。

ServerName 127.0.0.1:80

0
你应该在你的虚拟主机文件中实现其他参数,例如单独的错误日志和服务器别名。
DocumentRoot "D:/xampp/htdocs/asd" ServerName asd.com.br ServerAlias asd.com.br ErrorLog "logs/asd.log" CustomLog "logs/asd.log" combined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接