我曾经在中添加虚拟主机没有问题httpd.conf
。
现在将虚拟主机拆分成单独的文件后,出现了问题:我只能显示 sites-enabled 中的第一个虚拟主机。最终,我找到了一个我不喜欢的解决方案,它在我的本地 Linux 机器上运行,但在我的 Amazon AWS Ubuntu 服务器上却不行。(我不喜欢它的原因是,我想通过制作单独的文件来实现,就像指南中说的那样,尽量减少输入错误时出现的潜在问题,并且我希望它在本地和远程都能工作。)
这是我在本地完成的工作:我在文件末尾添加了以下内容apache2.conf
(从http://www.techstaty.com):
<VirtualHost *:80>
ServerName example1
DocumentRoot /var/www/example1
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/custom common
</VirtualHost>
<VirtualHost *:80>
ServerName exampletwo
DocumentRoot /var/www/exampletwo
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/custom common
</VirtualHost>
更新/etc/hosts
文件:
127.0.0.1 localhost example1 exampletwo
工作正常。
我不喜欢它的原因是我不明白为什么不把它们放在单独的文件中sites-available
,然后a2ensite example1
,同上exampletwo
,a2dissite default
然后重新启动服务器,这不会使我的两个虚拟主机工作。我读到,如果无论你请求哪个主机,你总是得到第一个按字母顺序排列的虚拟服务器,服务器就会感到困惑。
那么我该如何测试以找出问题所在?为什么它可以在我的两个本地 Ubuntu 机器(12.10 和 12.04)上运行,但在 Amazon AWS Ubuntu 12.04 实例上却不行?
apache2ctl configtest
说:Syntax OK
。重新启动后apache2ctl graceful
没有显示任何错误。我还检查了访问和错误日志,但没有获得任何见解。
我也尝试过:a2enmod vhosts_alias
但没什么区别。(我认为我的问题出现在有人尝试:www.ex... 而不是:example1 之前。)
答案1
这在 Rackspace 上对我有用。要将两个域设置为单独的虚拟主机。我将虚拟主机属性修改为
<VirtualHost example1:80>
ServerName example1
DocumentRoot /var/www/example1
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/custom common
</VirtualHost>
同样,我将第二个虚拟主机编辑为 exampletwo:80
如果这不起作用,您也可以尝试在 ports.conf 中添加 NameVirtualHosts。