我的网站启用了以下内容:
#
# Example.com (/etc/apache2/sites-available/adityaherlambang.com)
#
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.adityaherlambang.com
ServerAlias adityaherlambang.com
# Indexes + Directory Root.
DirectoryIndex index.html
DocumentRoot /var/www/adityaherlambang.com/htdocs/
# CGI Directory
ScriptAlias /cgi-bin/ /var/www/adityaherlambang.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
# Logfiles
ErrorLog /var/www/adityaherlambang.com/logs/error.log
CustomLog /var/www/adityaherlambang.com/logs/access.log combined
</VirtualHost>
在我的virtual.conf中我有:
# We're running multiple virtual hosts.
#
NameVirtualHost *:80
我只是按照教程这里。为什么现在当我重新启动服务器时会出现以下情况:
* Restarting web server apache2 [Sun Aug 14 04:35:30 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
[Sun Aug 14 04:35:30 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
... waiting .......[Sun Aug 14 04:35:42 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
[Sun Aug 14 04:35:42 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
我的等主机看起来像:
#127.0.0.1 localhost
127.0.0.1.:80 adityaherlambang.com
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
答案1
VirtualHost
没有默认端口;当你说<virtualHost *>
你的意思是全部端口全部地址。您需要改用*:80
。
答案2
伊格纳西奥是对的,但我只是想扩大一点。
如果你看一下文档名称虚拟主机。您可以看到语法要求先输入 IP,然后再输入端口。这并不意味着 Apache 会监听您在此处指定的端口,或者即使您只是使用,也不NameVirtualHost *
意味着它会监听每个端口。Apache 具有聆听指令它定义 Apache 监听哪个端口。
通过设置,NameVirtualHost *:80
您正在做的是,对于端口 80 上的所有请求,都通过基于名称的虚拟主机运行它。因此,如果您刚刚NameVirtualHost *
告诉 apache,无论请求来自哪里,都通过基于名称的虚拟主机运行它。如果指定了 IP,那么只有该 IP 才会受到虚拟主机的约束。
因此,最简单的答案就是始终让您的 NameVirtualHost 与您的虚拟主机匹配。但我认为了解原因很重要。因为有一天您可能会遇到一个疯狂的服务器Listen 80 8080 81
,其中 NameVirtualHost 仅设置在 8080 和 81 上??可能会发生。