FAQ

Page Discussion History

Difference between revisions of "HttpUserAgentModule"

(Directives)
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
 
= Syntax =
 
= Syntax =
  
 +
<geshi lang="nginx">
 
user_agent $variable_name {
 
user_agent $variable_name {
 
     greedy        name;
 
     greedy        name;
Line 10: Line 11:
 
     echo hello;
 
     echo hello;
 
}
 
}
 +
</geshi>
  
  
== Introduction ==
+
= Directives =
  
nongreedy:
+
== greedy ==
 
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.
 
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.
  
Line 20: Line 22:
 
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 frist. If we define safari is greedy, it scans the string in a reverse order. If a keyword is greedy, it will not return when it matches the keyword at the first time. It will continue to scan the string.
 
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 frist. If we define safari is greedy, it scans the string in a reverse order. If a keyword is greedy, it will not return when it matches the keyword at the first time. It will continue to scan the string.
  
default:
+
== default ==
 
set the default value of this variable;
 
set the default value of this variable;
  
Line 32: Line 34:
 
for example:
 
for example:
  
 +
<geshi lang="nginx">
 
user_agent $example {
 
user_agent $example {
 +
 
     #set default value
 
     #set default value
 
     default                                            msie;
 
     default                                            msie;
Line 54: Line 58:
 
     Chrome                                              5;
 
     Chrome                                              5;
 
}
 
}
 +
</geshi>

Latest revision as of 09:47, 29 November 2012

Contents

Syntax

user_agent $variable_name {
    greedy        name;
 
    name [([+|-]version) | (version1~version2)]  value;
}
 
if ($variable == value) {
    echo hello;
}


Directives

greedy

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 frist. If we define safari is greedy, it scans the string in a reverse order. If a keyword is greedy, it will not return when it matches the keyword at the first time. It will continue to scan the string.

default

set the default value of this variable;

The directive format is like this in the block: name version value;

name: the name of operating_system, browser, crawler and so on; version: It can be omitted, and it support multiple formats; value: It is the value filled to the variable;

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;
}