Path: blob/main/xml/ru/docs/http/ngx_http_charset_module.xml
1 views
<?xml version="1.0"?>12<!--3Copyright (C) Igor Sysoev4Copyright (C) Nginx, Inc.5-->67<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">89<module name="Модуль ngx_http_charset_module"10link="/ru/docs/http/ngx_http_charset_module.html"11lang="ru"12rev="5">1314<section id="summary">1516<para>17Модуль <literal>ngx_http_charset_module</literal> добавляет указанную18кодировку в поле <header>Content-Type</header> заголовка ответа.19Кроме того, модуль может перекодировать данные из одной кодировки в другую20с некоторыми ограничениями:21<list type="bullet">2223<listitem>24перекодирование осуществляется только в одну сторону — от сервера к клиенту,25</listitem>2627<listitem>28перекодироваться могут только однобайтные кодировки29</listitem>3031<listitem>32или однобайтные кодировки в UTF-8 и обратно.33</listitem>3435</list>36</para>3738</section>394041<section id="example" name="Пример конфигурации">4243<para>44<example>45include conf/koi-win;4647charset windows-1251;48source_charset koi8-r;49</example>50</para>5152</section>535455<section id="directives" name="Директивы">5657<directive name="charset">58<syntax><value>кодировка</value> | <literal>off</literal></syntax>59<default>off</default>60<context>http</context>61<context>server</context>62<context>location</context>63<context>if в location</context>6465<para>66Добавляет указанную кодировку в поле <header>Content-Type</header>67заголовка ответа.68Если эта кодировка отличается от указанной в директиве69<link id="source_charset"/>, то выполняется перекодирование.70</para>7172<para>73Параметр <literal>off</literal> отменяет добавление кодировки74в поле <header>Content-Type</header> заголовка ответа.75</para>7677<para>78Кодировка может быть задана с помощью переменной:79<example>80charset $charset;81</example>82В этом случае необходимо, чтобы все возможные значения переменной83присутствовали хотя бы один раз в любом месте конфигурации в виде84директив <link id="charset_map"/>, <link id="charset"/> или85<link id="source_charset"/>.86Для кодировок <literal>utf-8</literal>, <literal>windows-1251</literal>87и <literal>koi8-r</literal> для этого достаточно включить в конфигурацию88файлы <path>conf/koi-win</path>, <path>conf/koi-utf</path> и89<path>conf/win-utf</path>.90Для других кодировок можно просто сделать фиктивную таблицу перекодировки,91например:92<example>93charset_map iso-8859-5 _ { }94</example>95</para>9697<para>98Кроме того, кодировка может быть задана в поле <header>X-Accel-Charset</header>99заголовка ответа.100Эту возможность можно запретить с помощью директив101<link doc="ngx_http_proxy_module.xml" id="proxy_ignore_headers"/>,102<link doc="ngx_http_fastcgi_module.xml" id="fastcgi_ignore_headers"/>,103<link doc="ngx_http_uwsgi_module.xml" id="uwsgi_ignore_headers"/>,104<link doc="ngx_http_scgi_module.xml" id="scgi_ignore_headers"/>105и106<link doc="ngx_http_grpc_module.xml" id="grpc_ignore_headers"/>.107</para>108109</directive>110111112<directive name="charset_map">113<syntax block="yes"><value>кодировка1</value> <value>кодировка2</value></syntax>114<default/>115<context>http</context>116117<para>118Описывает таблицу перекодирования из одной кодировки в другую.119Таблица для обратного перекодирования строится на основании тех же данных.120Коды символов задаются в шестнадцатеричном виде.121Неописанные символы в пределах 80-FF заменяются на “<literal>?</literal>”.122При перекодировании из UTF-8 символы, отсутствующие в однобайтной кодировке,123заменяются на “<literal>&#XXXX;</literal>”.124</para>125126<para>127Пример:128<example>129charset_map koi8-r windows-1251 {130C0 FE ; # small yu131C1 E0 ; # small a132C2 E1 ; # small b133C3 F6 ; # small ts134...135}136</example>137</para>138139<para>140При описании таблицы перекодирования в UTF-8, коды кодировки UTF-8 должны141быть указаны во второй колонке, например:142<example>143charset_map koi8-r utf-8 {144C0 D18E ; # small yu145C1 D0B0 ; # small a146C2 D0B1 ; # small b147C3 D186 ; # small ts148...149}150</example>151</para>152153<para>154Полные таблицы преобразования из <literal>koi8-r</literal> в155<literal>windows-1251</literal> и из <literal>koi8-r</literal> и156<literal>windows-1251</literal> в <literal>utf-8</literal>157входят в дистрибутив и находятся в файлах <path>conf/koi-win</path>,158<path>conf/koi-utf</path> и <path>conf/win-utf</path>.159</para>160161</directive>162163164<directive name="charset_types">165<syntax><value>mime-тип</value> ...</syntax>166<default>text/html text/xml text/plain text/vnd.wap.wml167application/javascript application/rss+xml</default>168<context>http</context>169<context>server</context>170<context>location</context>171<appeared-in>0.7.9</appeared-in>172173<para>174Разрешает работу модуля в ответах с указанными MIME-типами175в дополнение к “<literal>text/html</literal>”.176Специальное значение “<literal>*</literal>” соответствует любому MIME-типу177(0.8.29).178</para>179180<para>181<note>182До версии 1.5.4 по умолчанию вместо MIME-типа183“<literal>application/javascript</literal>” использовался184“<literal>application/x-javascript</literal>”.185</note>186</para>187188</directive>189190191<directive name="override_charset">192<syntax><literal>on</literal> | <literal>off</literal></syntax>193<default>off</default>194<context>http</context>195<context>server</context>196<context>location</context>197<context>if в location</context>198199<para>200Определяет, выполнять ли перекодирование для ответов,201полученных от проксированного сервера или от FastCGI/uwsgi/SCGI/gRPC-сервера,202если в ответах уже указана кодировка в поле <header>Content-Type</header>203заголовка ответа.204Если перекодирование разрешено, то в качестве исходной кодировки205используется кодировка, указанная в полученном ответе.206<note>207Необходимо отметить, что если ответ был получен в подзапросе,208то, независимо от значения директивы <literal>override_charset</literal>,209всегда выполняется перекодирование из кодировки ответа в кодировку210основного запроса.211</note>212</para>213214</directive>215216217<directive name="source_charset">218<syntax><value>кодировка</value></syntax>219<default/>220<context>http</context>221<context>server</context>222<context>location</context>223<context>if в location</context>224225<para>226Задаёт исходную кодировку ответа.227Если эта кодировка отличается от указанной в директиве228<link id="charset"/>, то выполняется перекодирование.229</para>230231</directive>232233</section>234235</module>236237238