deadprogrammer Asked: 2010-01-12 11:52:20 +0800 CST2010-01-12 11:52:20 +0800 CST 2010-01-12 11:52:20 +0800 CST Apache NameVirtualHost 如何理解“0.0.0.0”? 772 “NameVirtualHost *”和“NameVirtualHost 0.0.0.0”有什么区别?两者似乎都在实现基于名称的虚拟主机,两者似乎都有效。“0.0.0.0”如何成为通配符? apache-2.2 namevirtualhost 1 个回答 Voted Best Answer Kyle Brandt 2010-01-12T12:47:57+08:002010-01-12T12:47:57+08:00 我相信从简短的代码来看它们是相同的: AP_DECLARE(void) ap_init_vhost_config(apr_pool_t *p) { ... } /* Parses a host of the form <address>[:port] ... 然后: if (strcmp(host, "*") == 0) { rv = apr_sockaddr_info_get(&my_addr, "0.0.0.0", APR_INET, port, 0, p); ... else { rv = apr_sockaddr_info_get(&my_addr, host, APR_UNSPEC, port, 0, p); 因此,在这种情况下,看起来 * 只是被解析为 0.0.0.0 ,如果它确实0.0.0.0如此,它将被传递(尽管 APR_INET 与 APR_UNSPEC 可能很重要,但我认为这可能只是 IPv 兼容性问题,所以也许有区别在于 0.0.0.0 时的 IPv4 和 * 时的 IPv6 是可能的,不确定)。 但我可能完全错误地解释了这一点,你可以自己看看server/vhost.c。
我相信从简短的代码来看它们是相同的:
然后:
因此,在这种情况下,看起来 * 只是被解析为 0.0.0.0 ,如果它确实
0.0.0.0
如此,它将被传递(尽管 APR_INET 与 APR_UNSPEC 可能很重要,但我认为这可能只是 IPv 兼容性问题,所以也许有区别在于 0.0.0.0 时的 IPv4 和 * 时的 IPv6 是可能的,不确定)。 但我可能完全错误地解释了这一点,你可以自己看看server/vhost.c
。