nginx中文文档-ngx_http_charset_module

ngx_http_charset_module模块为响应头额外的添加了自定义字符编码“Content-Type”域。

ngx_http_charset_module模块为响应头额外的添加了自定义字符编码“Content-Type”域。该模块可以将数据从一种编码转为另一种编码,有以下的限制:

  • 转换是单向的,从服务器到客户端
  • 只有单字节字符可以被转换
  • 单字节编码可以转换为UTF-8或从UTF-8转换

示例配置

include        conf/koi-win;

charset        windows-1251;
source_charset koi8-r;

charset

语法:charset charset | off
默认:charset off
上下文:http, server, location, if in location

在响应头域中通过 “Content-Type” 添加指定的字符编码。如果这个编码与source_charset指令中定义的编码不同,则会进行编码转换。
参数off取消了“Content-Type”响应头域。
编码可以定义为一个变量:
charset $charset;
这种情况下,变量的所有可能的值需要在配置文件中的charset_map、charset或source_charset指令至少一个中出现。对于utf-8、windows-1251以及koi8-r编码, 可以包含文件conf/koi-win、conf/koi-utf和conf/win-utf到配置文件中。 对于其他的编码,可以通过一个虚拟的转换表实现,例如:
charset_map iso-8859-5 _ { }
字符编码也可以通过“X-Accel-Charset”响应头域设置。这个功能可以通过proxy_ignore_headers、fastcgi_ignore_headers、uwsgi_ignore_headers及scgi_ignore_headers指令禁用。

charset_map

语法:charset_map charset1 charset2 { … }
默认:—
上下文:http

描述了从一种编码转为另一种编码的转换表。反向转换表使用同样的数据构建。 字符编码用16进制给出。丢失的字符在0x80-0xFF之间使用“?”替换。当从UTF-8编码进行转换时,丢失的一字节字符将使用“&#XXXX;”代替。
例子:

charset_map koi8-r windows-1251 {
    C0 FE ; # small yu
    C1 E0 ; # small a
    C2 E1 ; # small b
    C3 F6 ; # small ts
    ...
}

当描述一个转为UTF-8编码的转化表时,UTF-8应在第二列给出,例如:

charset_map koi8-r utf-8 {
    C0 D18E ; # small yu
    C1 D0B0 ; # small a
    C2 D0B1 ; # small b
    C3 D186 ; # small ts
    ...
}

全量的转换表koi8-r与windows-1251转换表、koi8-r与utf-8转换表、windows-1251与utf-8转换表分别在conf/koi-win、conf/koi-utf 和conf/win-utf文件中。

charset_types

语法:charset_types mime-type
默认:charset_types text/html text/xml text/plain text/vnd.wap.wml
application/javascript application/rss+xml
上下文:http, server, location
版本:0.7.9+

开启处理请求指定MIME类型的功能。
特殊值“*”代表处理任何类型,该值从0.8.29版本起开始支持。
直到1.5.4版本,使用“application/x-javascript”作为默认的MIME类型,而不是“application/javascript”。

override_charset

语法:override_charset on | off
默认:override_charset off
上下文:http, server, location, if in location

决定当响应已经通过“Content-Type”头域带了字符编码时,是否会为从代理服务器或FastCGI/uwsgi/SCGI服务器收到的结果进行转换。如果允许转换,从响应中收到的编码将作为原始编码类型。
需要注意的是,如果响应是从子请求接收到的,那么总会从响应的编码转为主请求的编码,不管override_charset指令的设置。

source_charset

语法:source_charset charset
默认:—
上下文:http, server, location, if in location

定义响应的原始编码,如果该值与charset指令中定义的字符编码不同,则会进行转换。

nginx中文文档-ngx_http_browser_module

此页面版本:2016-06-08
ngx_http_browser_module模块创建了基于浏览器User-Agent的变量,用于声明浏览器类型。

ngx_http_browser_module模块创建了基于浏览器User-Agent的变量,支持以下变量:

$modern_browser
等于modern_browser_value指令设置的值,如果浏览器被定义为现代浏览器。

$ancient_browser
等于ancient_browser_value指令设置的值,如果浏览器被定义为古老浏览器。

$msie
等于“1”,如果是任意版本的IE浏览器。
示例配置

选择一个索引文件:

modern_browser_value "modern.";

modern_browser msie      5.5;
modern_browser gecko     1.0.0;
modern_browser opera     9.0;
modern_browser safari    413;
modern_browser konqueror 3.0;

index index.${modern_browser}html index.html;

为老浏览器重定向:

modern_browser msie      5.0;
modern_browser gecko     0.9.1;
modern_browser opera     8.0;
modern_browser safari    413;
modern_browser konqueror 3.0;

modern_browser unlisted;

ancient_browser Links Lynx netscape4;

if ($ancient_browser) {
    rewrite ^ /ancient.html;
}

ancient_browser

语法:ancient_browser string
默认:—
上下文:http, server, location

如果请求头域“User-Agent”值的任意子串包含定义的字符串,会被认为是古老的浏览器。特殊的字符串“netscape4”相当于正则表达式“^Mozilla/[1-4]”。

ancient_browser_value

语法:ancient_browser_value string
默认:ancient_browser_value 1
上下文:http, server, location

设置$ancient_browser变量的值

modern_browser

语法:modern_browser browser version
modern_browser unlisted
默认:—
上下文:http, server, location

定义从哪个版本开始,浏览器被视为现代浏览器。浏览器可以是下面之一:msie、gecko(基于Mozilla的浏览器)、opera、safari或konqueror。
版本可以按以下方式定义:X, X.X, X.X.X, 或X.X.X.X,每种格式的最大值分别是4000, 4000.99, 4000.99.99, 以及4000.99.99.99。
特殊值unlisted定义了当modern_browser和ancient_browser指令都没有列出时,浏览器被视为现代浏览器,否则浏览器被视作古老浏览器。如果请求头中没有“User-Agent”,则与未列出的处理方法相同。

modern_browser_value

语法:modern_browser_value string
默认:modern_browser_value 1
上下文:http, server, location

设置$modern_browser变量的值。