- 场景: 匹配请求 url 的参数,如果参数是 debug 则设置 $foo = 1 ,默认设置 $foo = 0
- map $args $foo {
- default 0;
- debug 1;
- }
$args 是nginx内置变量,就是获取的请求 url 的参数。 如果 $args 匹配到 debug 那么 $foo 的值会被设为 1 ,如果 $args 一个都匹配不到 $foo 就是default 定义的值,在这里就是 0
- 在 Nginx 配置文件中的作用段: http{} ,注意 map 不能写在 server{} 否则会报错
map 语法
map $var1 $var2 {...}
map 的 $var1 为源变量,通常可以是 nginx 的内置变量,$var2 是自定义变量。 $var2 的值取决于 $var1 在对应表达式的匹配情况。 如果一个都匹配不到则 $var2 就是 default 对应的值。
- 一个正则表达式如果以 “~” 开头,表示这个正则表达式对大小写敏感。以 “~*”开头,表示这个正则表达式对大小写不敏感。
- map $http_user_agent $agent {
- default "";
- ~curl curl;
- ~*apachebench" ab;
- }