mod_vhost
mod_vhost 提供了实现虚拟主机(virtual webhost)的多种方式。
它能将主机名映射到动作,并提供了多种实现方式。
这些方式在映射的灵活性(映射什么以及映射到哪里)和性能方面有所不同。
vhost.map (动作)
将给定主机名映射到动作块
vhost.map mapping;
- 映射
- 以主机名为键、动作为值的键值列表
vhost.map
提供了一种快速(通过哈希表查找)且灵活的映射方式,但它只映射精确的主机名(不支持模式/正则表达式匹配)。服务器端口永远不被视为主机名的一部分。使用 default
键(关键字,而非字符串)来指定默认动作。
示例
vhost.map ["host1" => actionblock1, "host2" => actionblock2, ..., "hostN" => actionblockN, default => actionblock0];
vhost.map_regex (动作)
将匹配的主机名模式映射到动作块
vhost.map_regex mapping;
- 映射
- 以主机名的正则表达式为键、动作为值的键值列表
vhost.map_regex
会按给定顺序遍历列表,并在第一个匹配项处停止;如果没有正则表达式匹配,它将使用 default
动作(如果已指定)。
示例
vhost.map_regex ["host1regex" => actionblock1, "host2regex" => actionblock2, ..., "hostNregex" => actionblockN, default => actionblock0];
vhost.debug (选项)
启用调试输出
vhost.debug value;
默认值: false
示例
两种动作也可以结合使用。
它的作用(例如)
- 如果请求的是
example.com
或www.example.com
,则执行名为“examplesite”的块 - 如果请求的是
mydomain.tld
,则执行名为“mydomain”的块 - 如果请求的是
mydomain.com
或www.mydomain.net
,则执行名为“mydomain”的块(通过正则表达式匹配) - 如果请求的是
www.mydomain.tld
或其他完全不同的内容,则执行名为“defaultdom”的块
setup {
module_load "mod_vhost";
}
examplesite = {
#... more config here ...
};
mydomain = {
#... more config here ...
};
defaultdom = {
#... more config here ...
};
vhost.map [
"example.com" => examplesite,
"www.example.com" => examplesite,
"mydomain.tld" => mydomain,
default => {
vhost.map_regex [
"^(www\.)?mydomain\.(com|net|org)$" => mydomain,
default => defaultdom
];
}
];