web-dev-qa-db-ja.com

Apache NameVirtualHostは「0.0.0.0」をどのように理解しますか?

「NameVirtualHost *」と「NameVirtualHost0.0.0.0」の違いは何ですか?どちらも名前ベースの仮想ホストを実装しているようで、どちらも機能しているようです。 「0.0.0.0」はどのようにしてワイルドカードになりますか?

4
deadprogrammer

コードを簡単に見てみると、同じだと思います。

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であなた自身のために見ることができます。

3
Kyle Brandt