como o Apache NameVirtualHost entende “0.0.0.0”?

4

Qual é a diferença entre "NameVirtualHost *" e "NameVirtualHost 0.0.0.0"? Ambos parecem estar implementando virtualhosts baseados em nome, ambos parecem funcionar. Como "0.0.0.0" se torna um curinga?

    
por deadprogrammer 11.01.2010 / 20:52

1 resposta

3

Eu acredito que eles são os mesmos de breve olhada no código:

AP_DECLARE(void) ap_init_vhost_config(apr_pool_t *p)
{
     ...
}
 /* Parses a host of the form <address>[:port]
...

Então:

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);

Então parece que * só é analisado para 0.0.0.0 neste caso, e se realmente é 0.0.0.0 ele será passado como tal (embora talvez APR_INET vs. APR_UNSPEC seja importante, mas eu acho que isso pode ser apenas IPv coisa compatibilidade, então talvez haja uma diferença em que IPv4 quando 0.0.0.0 e IPv6 é possível quando *, não tenho certeza). Mas eu posso estar interpretando isso totalmente errado , você pode ver por si mesmo em server/vhost.c .

    
por 11.01.2010 / 21:47