ngx_http_browser_module
通过http的User-Agent
头数据区分及定义浏览器类型。
指令
名称 | 参数类型 | 默认值 | 作用描述 | 上下文 |
---|---|---|---|---|
ancient_browser | string list | - | 若任意定义的字符串在User-Agent 中找到,则浏览器被认定为古老的浏览器,特殊字符串netscape4 表示^Mozilla/[1-4] 正则表达式 | http, server, location |
ancient_browser_value | string | 1 | 当识别浏览器为古老浏览器时,设置$ancient_browser 的值 | http, server, location |
modern_browser | browser version | - | browser取值:msie, gecko, opera, safari, konqueror,版本定义格式为X, X.X, X.X.X, 或者X.X.X.X. ,每个格式的最大值分别为: 4000, 4000.99, 4000.99.99, and 4000.99.99.99。 | http, server, location |
modern_browser_value | string | 1 | 当识别浏览器为现代浏览器时,设置$modern_browser 的值 | http, server, location |
内置变量
名称 | 描述 |
---|---|
$ancient_browser | 如果浏览器被标识为现代浏览器,则等于modern_browser_value指令设置的值 |
$modern_browser | 如果浏览器被识别为古老浏览器,则等于Ancient_browser_value指令设置的值 |
$msie | 如果浏览器被识别为MSIE,不区分任何版本,则等于1 |
示例
通过IE、FireFox、Chrome、Edge访问,记录浏览器类型及输出User-Agent,我们使用IE浏览器模拟User-Agent头。
nginx
server {
listen 8081;
server_name localhost;
default_type text/html;
# 古老浏览器定义
ancient_browser netscape4;
# 现代浏览器定义
modern_browser msie 5.0;
modern_browser gecko 0.9.1;
modern_browser opera 8.0;
modern_browser safari 540;
modern_browser konqueror 3.0;
location / {
# 不同浏览器输出浏览器类型及User-Agent头信息
if ($msie) {
set $value 'ie\n$http_user_agent';
return 200 $value;
break;
}
if ($ancient_browser) {
set $value 'ancient\n$http_user_agent';
return 200 $value;
break;
}
if ($modern_browser) {
set $value 'modern\n$http_user_agent';
return 200 $value;
break;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
访问 http://localhost:8081 后,切换不同浏览器效果如下: