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指令中定义的字符编码不同,则会进行转换。