我一个朋友, 昨天跟我说他的apache无论怎么写virtualHost,都不能够正常解析域名。
他的做法如下:
1、修改hosts,添加
2、修改httpd.conf,添加
ServerName www. test. com
我看了一下配置没问题,查来查去,最后才知道,原来是没有加NameVirtualHost的原因。
下面我复制一下apache手册关于这个指令的介绍:
NameVirtualHost 指令
说明 | 为一个基于域名的虚拟主机指定一个IP地址(和端口) |
---|---|
语法 | NameVirtualHost addr[:port] |
作用域 | server config |
状态 | 核心(C) |
模块 | core |
如果您要配置基于域名的虚拟主机,NameVirtualHost
指令就是您必须的指令之一。
尽管addr参数可以使用主机名,但建议您还是使用IP地址。比如:
NameVirtualHost 111.22.33.44
使用NameVirtualHost
指 令,您可以指定一个基于域名的虚拟主机将使用哪个IP地址来接受请求。在一个防火墙或是其它代理接受了请求并把它转到服务器所在的另外一个IP地址上的情 况下,您必须指定伺服请求的机器物理界面上的IP地址。如果您对于多个地址使用了多个基于域名的虚拟主机,您应该为每个地址使用这个指令。
注意
"主服务器"和任何其它"_default_
"服务器都不会伺服发送到NameVirtualHost
IP地址的请求。(除非您指定了NameVirtualHost
,但没有为这个地址指定任何VirtualHost
)。
另外,您还可以为您使用的基于域名的虚拟主机指定一个端口号。比如:
NameVirtualHost 111.22.33.44:8080
IPv6地址必须封装在一对方括号内,如下例所示:
NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080
为了接受所有界面的请求,您可以使用"*
":
NameVirtualHost *
<VirtualHost>
指令的参数
请注意,<VirtualHost>
指令的参数必须与NameVirtualHost
指令的参数完全匹配。
NameVirtualHost 1.2.3.4
<VirtualHost 1.2.3.4>
# ...
</VirtualHost>