Module ngx_http_map_module
| Example Configuration Directives map map_hash_bucket_size map_hash_max_size |
The ngx_http_map_module module creates variables
whose values depend on values of other variables.
Example Configuration
map $http_host $name {
hostnames;
default 0;
example.com 1;
*.example.com 1;
example.org 2;
*.example.org 2;
.example.net 3;
wap.* 4;
}
map $http_user_agent $mobile {
default 0;
"~Opera Mini" 1;
}
Directives
| Syntax: |
map
|
|---|---|
| Default: | — |
| Context: |
http |
Creates a new variable whose value depends on values of one or more of the source variables specified in the first parameter.
Before version 0.9.0 only a single variable could be specified in the first parameter.
Since variables are evaluated only when they are used, the mere declaration
even of a large number of “map” variables
does not add any extra costs to request processing.
Parameters inside the map block specify a mapping
between source and resulting values.
Source values are specified as strings or regular expressions (0.9.6).
Strings are matched ignoring the case.
A regular expression should either start from the “~”
symbol for a case-sensitive matching, or from the “~*”
symbols (1.0.4) for case-insensitive matching.
A regular expression can contain named and positional captures
that can later be used in other directives along with the
resulting variable.
If a source value matches one of the names of special parameters
described below, it should be prefixed with the “\” symbol.
The resulting value can be a string or another variable (0.9.0).
The directive also supports three special parameters:
defaultvalue-
sets the resulting value if the source value matches none
of the specified variants.
When
defaultis not specified, the default resulting value will be an empty string. hostnames-
indicates that source values can be hostnames with a prefix or suffix mask:
The following two records*.example.com 1; example.* 1;
can be combined:example.com 1; *.example.com 1;
This parameter should be specified before the list of values..example.com 1;
includefile- includes a file with values. There can be several inclusions.
If the source value matches more than one of the specified variants, e.g. both a mask and a regular expression match, the first matching variant will be chosen, in the following order of priority:
- string value without a mask
-
longest string value with a prefix mask,
e.g. “
*.example.com” -
longest string value with a suffix mask,
e.g. “
mail.*” - first matching regular expression (in order of appearance in a configuration file)
- default value
| Syntax: |
map_hash_bucket_size |
|---|---|
| Default: |
map_hash_bucket_size 32|64|128; |
| Context: |
http |
Sets the bucket size for the map variables hash tables. Default value depends on the processor’s cache line size. The details of setting up hash tables are provided in a separate document.
| Syntax: |
map_hash_max_size |
|---|---|
| Default: |
map_hash_max_size 2048; |
| Context: |
http |
Sets the maximum size of the map variables
hash tables.
The details of setting up hash tables are provided in a separate
document.
