VHost Templates

Introduction

Introduced in version 0.5, ZeroConf can use ADC configured VHost Templates.

In general, VHost Templates provide a method to generate many VHosts that differ only by domain and cluster. Logically then, it follows that ZeroConf domains should also be able to use VHost Templates.

Pretext

ZeroConf uses VHost Templates slightly different than a Template's Member VHost. A Member VHost will inherit from the Template VHost, all else is inherited from the Global VHost/Server level configurations.

ZeroConf will inherit from the Template VHost. If a value is not set in the template vhost, Server Level inheritance is not guaranteed. Therefore, it is recommended to configure as much of the values as possible in the event that a configuration did not inherit the Server level value.

Only a VHost Template needs to be configured. There is no need to create member VHosts for ZeroConf to be able to use the template.

ADC Configurations

In addition to the general template configurations, the following options are available:

In Server->ZeroConf:

Separate VHost Per Domain

In Virtual Host Templates->Template->ZeroConf section:

Used By ZeroConf
Separate VHost Per Domain

The Used By ZeroConf configuration toggles whether to allow ZeroConf to use the template. Defaults to yes.

The two Separate VHost Per Domain configurations control how the ADC builds the VHosts. One's value does not affect the other; both default to 'no'.

By default, domains that share backend combinations will also share VHosts and cache stores. Enabling separate VHost per domain creates individual VHosts and cache stores.

Do note that ZeroConf is not context aware. It does not know the similarities between example.com and blog.example.com. If Separate VHost per Domain is selected, these domains will have their own VHosts.

ZeroConf Messages

By default, no templates are selected. Therefore, the server level settings are used to create the VHosts.

To select a template, the ZCUP message needs to use a vhost entry containing a "template" configuration.

For Example:

Suppose we want to disable cache for a specific domain. In the ADC configurations, I can create a VHost Template named noCacheTemplate that disables the cache settings. My ZCUP message could look like the following:

conf=
{
"vhost_list" :
        [
                {
                "template" : "noCacheTemplate",
                "domain_list" :
                        [ "c7-30.ls.com","mail.c7-30.ls.com","www.c7-30.ls.com","cpanel.c7-30.ls.com","webdisk.c7-30.ls.com","webmail.c7-30.ls.com"],
                "conf_list" : [
                        {
                        "lb_port_list" : [443],
                        "dport" : 443,
                        "be_ssl" : true,
                        "ip_list" :
                                [
                                        { "ip": "10.10.40.153", "port_list" : [443] }
                                ]
                        }
                ]
                }
,               {
                "domain_list" :
                        [ "newdomain100.com","mail.newdomain100.com","www.newdomain100.com","webmail.newdomain100.com","cpanel.newdomain100.com","webdisk.newdomain100.com"],
                "conf_list" : [
                        {
                        "lb_port_list" : [443],
                        "dport" : 443,
                        "be_ssl" : true,
                        "ip_list" :
                                [
                                        { "ip": "10.10.40.153", "port_list" : [443] }
                                ]
                        }
                ]
                }
        ]
}

This ZCUP configuration includes two vhosts. The conf list is identical; the only difference is the domain list and a template configuration in the first VHost.

The first VHost uses the VHost Template named noCacheTemplate configured in the ADC. The second VHost uses the server level configurations.