Map模块(Map)
·摘要
这个模块允许你分类或者同时映射多个值到多个不同值并储存到一个变量中。
如下例:
map $http_host $name {
hostnames;
default 0;
example.com 1;
*.example.com 1;
test.com 2;
*.test.com 2;
.site.com 3;
}
一个典型的使用映射的例子是代替一个含有很多服务器的/location或者重定向:
map $uri $new {
default http://www.domain.com/home/;
/aa http://aa.domain.com/;
/bb http://bb.domain.com/;
/john http://my.domain.com/users/john/;
}
server {
server_name www.domain.com;
rewrite ^ $new redirect;
}
·指令
map
语法:map $var1 $var2 { ... }
默认值:none
使用字段:http
指定一个变量使用的映射表,有三个指定的参数:
·default - 指定如果没有匹配结果将使用的默认值。
·hostnames - 允许对类似主机名的值进行简单的查询匹配,第一个点后面的部分将用作精确的主机名。例如:
*.example.com 1;
而不是写成两个:
example.com 1;
*.example.com 1;
可以只写成一条:
.example.com 1;
·include - 包含一个含有映射值的文件,可以包含多个。
map_hash_max_size
语法:map_hash_max_size number
默认值:map_hash_max_size 2048
使用字段:http
这个指令设置映射表对应的哈希表的最大值,更多信息可以参考优化章节。
map_hash_bucket_size
语法:map_hash_bucket_size n
默认值:map_hash_bucket_size 32/64/128
使用字段:http
这个指令指定一个映射表中的变量在哈希表中的最大值,这个值取决于处理器的缓存,更多信息可以参考优化章节。
·参考文档