4

Like many of us, I have an apache server (2.2.15, plus patches) with a lot of virtual hosts on it. More than I have IPv4 addresses, to be sure, which is why I use NameVirtualHost to run lots of them on the same IPv4 address.

I'm busily trying to get everything I do IPv6-enabled. This server now has a routed /64, which gives me an awful lot of v6 addresses to throw around. What I'm trying to find is a simple way to tell each v4-NameVirtualHost that it should also function as a VirtualHost on a unique ipv6 address. I really, really don't want to have to define each virtual host twice.

Does anyone know of an elegant way to do this? Or to do something comparable, in case I've embedded any dangerously-ignorant assumptions in my question?

MadHatter
  • 79,770
  • 20
  • 184
  • 232

2 Answers2

5

The easy way is to do nothing to your Apache configuration.

Assuming you used directives like NameVirtualHost * and <VirtualHost *:80> then Apache will answer for any of the virtual hosts on any address it's Listening on (all possible addresses, by default).

If you don't find it acceptable for Apache to answer any virtual host on any possible IPv6 address, then you'll end up having to edit your <VirtualHost> entries as shown in @SanderSteffann's answer.

Michael Hampton
  • 244,070
  • 43
  • 506
  • 972
  • Notwithstanding my comment to Sander above, I would accept this answer **also**, if I could. Your point is excellent, and shows me how my mind has got trapped in "the old days" of Apache config. I will think hard about whether I need to implement Sander's idea at all before I roll it out into production. Thank you! – MadHatter Nov 08 '12 at 07:56
5

I think something like this will work (disclaimer: this is from the top of my head, I haven't tested this yet):

NameVirtualHost 10.0.0.1:80

<VirtualHost 10.0.0.1:80 [2001:db8::1]:80>
   ServerName blabla
   ...
</VirtualHost>

<VirtualHost 10.0.0.1:80 [2001:db8::2]:80>
   ServerName blabla2
   ...
</VirtualHost>

etc...
Sander Steffann
  • 7,712
  • 19
  • 29