Please excuse my language: I just spent a long time with a partner who insisted on doing things _very much_ the hard way.
> I'd bet that most users who don't have SNI supporting browsers don't have access to IPv6 servers either. IIRC IPv6 on windows XP is turned off by default which for most users means it may as well not be there.
Please separate the requirements of their browsers from the requirements of their servers. The need for SNI is primarily due to the difficulties of SSL key handling: when you connect to an IP address for an encrypted SSL connection, which is tied to the IP address and the host's SSL keys associated with that IP address.
SNI provides some useful workarounds for that requirement, but it's often been awkward to scale and to support. Profound difficulties occur when supporting the name-based virtual servers for people and software _who refuse to follow the best practices_. The results can be nightmarish. If I, as a user, use "www.example.com" instead of "example.com" and they're both at the same IP address, I can often wind up with completely different web pages and little hint of what I did wrong, and then call tech support about the problem. Similarly,
It's a problem I, or my colleagues, run into several times a year.
> umm at least with apache there doesn't seem to be much difference. With IP based vitual hosting you tell it what IP you want to go with each site. With name based virtual hosting you tell it a list of names to go with each site.
The difference is that there are often many ways to reach exactly the same IP address with alternative hostnames in the URL, such as DNS aliases, putting a "." on the end of the hostname (which is completely valid in DNS and prevents the addition of an automatic local domain extension), shortened hostnames if your local DNS supports adding the local domain, modified /etc/hosts files on the client, (which is still far too common a practice from very, very old setup documentation), internal DNS versus DNS entries in sites that use load balancers or static NAT, and others. Couple this with old and poorly managed configuration files complex ourtward facing environments, and a long QA and release process, as is common in large environments, and the slightest name-based misconfiguration can corrupt the entire site and be very awkward to trace back.
There is also the very confusing behavior when common software configurations start putting IP address "127.0.0.1" and "::1" in the webserver's /etc/hosts with the fully qualified hostname. This is actually quite common, but it means that the web server itself can't reliably detect whether the web server is running properly running. Going to the IP address by typing it directly is not necessarily the same virtual host, and redirects will go to the /etc/hosts specified "127.0.0.1". This makes testing the primary web service from the same host itself quite chaotic.
The IP based virtual hosting not only allows far easier management of these configurations, it allows vastly simplified packet analysis to trace and analyze the virtual host specific network traffic. For that reasoon alone, I urge partners and colleagues to switch to IPv6 IP based virtual hosts for crowded externally facing virtual hosts, and to feel free to use IPv4 virtual hosts for internal NAT'ed addresses.