「NameVirtualHost *」と「NameVirtualHost0.0.0.0」の違いは何ですか?どちらも名前ベースの仮想ホストを実装しているようで、どちらも機能しているようです。 「0.0.0.0」はどのようにしてワイルドカードになりますか?
コードを簡単に見てみると、同じだと思います。
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
であなた自身のために見ることができます。