On Fri, Feb 9, 2018 at 12:04 PM, Stefan Eissing <stefan.eiss...@greenbytes.de> wrote: > > >> Am 06.02.2018 um 08:13 schrieb William A Rowe Jr <wr...@rowe-clan.net>: >> >> Forgive the top-post, Gmail app sucks. >> >> Thanks for taking the time for tl;dr - it sums up the current situation >> really well. >> >> I pointed out some months ago that the matching foo in vhosts is weak, since >> we have a 1:1 ip:port relationship. We determined that can change in the >> next iteration to compare a list we already keep. It seems also evident that >> a vhost could have more than one ServerName as long as we track the >> canonical name that the request presented. >> >> Considering your cases, I'm wondering if the simplest thing is to promote >> <VirtualHost > to a preprocessed, but fully nestable context on trunk? > > That is one possible way to address this. However, since VirtualHost requires > at least one address, this would be confusing: > > <VirtualHost *:NNN> > ServerName example.org > <VirtualHost *:80> > </VirtualHost> > <VirtualHost *:443> > </VirtualHost> > </VirtualHost> > > What would NNN be or what would it mean? Would it also be inherited by the > nested vhosts? This is confusing.
The <VirualHost> directive could be relaxed to also take no arg. Since at least one is required by now, it wouldn't break anything. > > From usability point of view, it is superior to introduce a new "section" > that can keep common locations and other settings for sharing. The > implementation is more painful, though. Unsurprisingly, I think of something > like this: > > <ManagedDomain example.org> > <VirtualHost *:80> > </VirtualHost> > <VirtualHost *:443> > </VirtualHost> > </ManagedDomain> > > Implementation-wise: > * an MD is basically a server_rec plus additional props > * server_rec gets 2 new members "server_rec *child, *sibling" to keep > contained vhosts > * server_rec->next contains only leaf server_recs -> base_server->next > contains all VirtualHosts as before > * leaf server_rec->child is NULL > * no nesting of MDs foreseen, disabled, no nesting of VirtualHost > > - VirtualHosts server_rec* can be walked as before and all vhost functions > see no change. > - Modules should see no change either > - The MD and VirtualHost hierarchy can be traversed by new code starting from > base server. > > What do you think? I like these semantics. But I'd prefer <VirtualHost> as root, <ManagedDomain ...> is too "domain" centric IMHO (all the inner vhosts are necessarily bound to a domain). With <VirtualHost "some.domain"> or <VirtualHost> + ServerName + WhatEverMakesSenseForAllInners we could achieve the same and more (including a common <ManagedDomain> why not), while individual inner vhosts can have their own domain (if grouping is based on something else). So I find root <VirtualHost> more generic as a container, we could want another name too (Service, Container, ...).