¿Cuál es la diferencia entre "NameVirtualHost *" y "NameVirtualHost 0.0.0.0"? Ambos parecen ser de aplicación basado en el nombre virtualhosts, ambos parecen funcionar. ¿Cómo funciona "0.0.0.0" convertido en un comodín?
Respuesta
¿Demasiados anuncios?Creo que son las mismas de breve vistazo al código:
AP_DECLARE(void) ap_init_vhost_config(apr_pool_t *p)
{
...
}
/* Parses a host of the form <address>[:port]
...
Entonces:
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);
Así que parece que * sólo se analiza a 0.0.0.0 en esta instancia, y si realmente es 0.0.0.0
que será aprobado como tal (Aunque tal vez APR_INET vs APR_UNSPEC asuntos, pero creo que podría ser IPv compatibilidad cosa, así que tal vez hay una diferencia en que IPv4 cuando 0.0.0.0 y IPv6 es posible cuando *, no estoy seguro). Pero yo podría interpretar esta totalmente equivocado, usted puede ver por sí mismo en server/vhost.c
.