Accept cookies for analytics, social media, and advertising, or learn more and adjust your preferences. These cookies are on by default for visitors outside the UK and EEA. Privacy Notice.
nginx-http-user-agent - similar to NGINX’s native ngx_http_browser_module, but provides more search options.
user_agent $variable_name {
greedy name;
name [([+|-]version) | (version1~version2)] value;
}
if ($variable == value) {
echo hello;
}
We specify the keyword in the user_agent string from right to left, and this is more efficient. As usual, we use the greedy algorithm. It will return immediately after the keyword being found.
E.g 1. “Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)”, this string is MSIE’s user_agent string, we will return when we find the keyword “MSIE”. But the truth is not alway like this: E.g 2. “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20”, This is Chrome’s user_agent. We will match Safari first. If we define safari is greedy, it scans the string in a reverse order. If a keyword is greedy, it will not return immediately when the keyword is matched for the first time, but rather continue to scan the string.
set the default value of this variable;
The directive format is like this in the block:
name version value;
For example:
user_agent $example {
#set default value
default msie;
#define safari is greedy
greedy safari;
#match exact version
msie 6.0 1;
#match interval
msie 7.0~8.0 2;
#match greater than version 9.0
msie 9.0+ 3;
#match less than version 4.0 (include 4.0)
msie 4.0- 4;
#match all
Chrome 5;
}