HttpSplitClientsModule
(Difference between revisions)
(→split_clients) |
Willybarro (Talk | contribs) (Add quotes to improve readability. Remove "-" directive as it's not accepted anymore. Overview about how the percentage calculation works. Example of how to add a query string based on split clients.) |
||
| Line 3: | Line 3: | ||
ngx_http_split_clients_module is used to split clients based on some conditions(e.g ip addresses, headers, cookies, etc). | ngx_http_split_clients_module is used to split clients based on some conditions(e.g ip addresses, headers, cookies, etc). | ||
| − | + | = Examples = | |
| + | |||
| + | == Basic configuration: == | ||
<geshi lang="nginx"> | <geshi lang="nginx"> | ||
http { | http { | ||
split_clients "${remote_addr}AAA" $variant { | split_clients "${remote_addr}AAA" $variant { | ||
| − | + | 40.5% ".one"; | |
| − | + | 59.5% ".two"; | |
| − | + | ||
} | } | ||
| Line 15: | Line 16: | ||
location / { | location / { | ||
index index${variant}.html; | index index${variant}.html; | ||
| + | [...] | ||
| + | } | ||
</geshi> | </geshi> | ||
| − | $ | + | On the example configuration above, the input for calculating the percentage is the variable plus string ('''"${remote_addr}AAA"'''). This string will be converted into a percentage value using ''MurmurHash2'', the result will be compared to the directives and fill the $variant variable with the value just after the percentage in the configuration directives. |
| + | |||
| + | Instead of '''${remote_addr}''', one could use '''${cookie}''', '''${args}''' or another [http://wiki.nginx.org/HttpCoreModule#Variables, nginx variable]. You may also add a salt (arbitrary string) if needed. | ||
| + | |||
| + | * Keep in mind that if you use a variable like '''${remote_addr}''' (user IP), the hash (and percentage) will always be the same as long as the user/client keep the same IP. In other words, the '''$variant''' value will always be the same for the same IP. | ||
| + | * Hashing algorithm is MurmurHash since version 1.0.1; Previously CRC32. | ||
| + | |||
| + | == Sending a query string variable to 51% of clients (to PHP scripts) == | ||
| + | <geshi lang="nginx"> | ||
| + | http { | ||
| + | split_clients "${remote_addr}" $additionalQsVariable { | ||
| + | 51% "coolVariable=1"; | ||
| + | 49% ""; | ||
| + | } | ||
| + | |||
| + | server { | ||
| + | location ~ \.php$ { | ||
| + | set $args "${query_string}&${$additionalQsVariable}"; | ||
| + | [...] | ||
| + | } | ||
| + | } | ||
| + | </geshi> | ||
= Directives = | = Directives = | ||
Revision as of 17:50, 23 November 2012
Contents |
Synopsis
ngx_http_split_clients_module is used to split clients based on some conditions(e.g ip addresses, headers, cookies, etc).
Examples
Basic configuration:
On the example configuration above, the input for calculating the percentage is the variable plus string ("${remote_addr}AAA"). This string will be converted into a percentage value using MurmurHash2, the result will be compared to the directives and fill the $variant variable with the value just after the percentage in the configuration directives.
Instead of ${remote_addr}, one could use ${cookie}, ${args} or another nginx variable. You may also add a salt (arbitrary string) if needed.
- Keep in mind that if you use a variable like ${remote_addr} (user IP), the hash (and percentage) will always be the same as long as the user/client keep the same IP. In other words, the $variant value will always be the same for the same IP.
- Hashing algorithm is MurmurHash since version 1.0.1; Previously CRC32.
Sending a query string variable to 51% of clients (to PHP scripts)
Directives
split_clients
| Syntax: | split_clients string $variable { ... } |
| Default: | |
| Context: | http |
| Reference: | split_clients |










