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.comwww.example.com,则执行名为“examplesite”的块
  • 如果请求的是 mydomain.tld,则执行名为“mydomain”的块
  • 如果请求的是 mydomain.comwww.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
		];
	}
];