Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/http/ngx_http_charset_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Igor Sysoev
5
Copyright (C) Nginx, Inc.
6
-->
7
8
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
9
10
<module name="Модуль ngx_http_charset_module"
11
link="/ru/docs/http/ngx_http_charset_module.html"
12
lang="ru"
13
rev="5">
14
15
<section id="summary">
16
17
<para>
18
Модуль <literal>ngx_http_charset_module</literal> добавляет указанную
19
кодировку в поле <header>Content-Type</header> заголовка ответа.
20
Кроме того, модуль может перекодировать данные из одной кодировки в другую
21
с некоторыми ограничениями:
22
<list type="bullet">
23
24
<listitem>
25
перекодирование осуществляется только в одну сторону — от сервера к клиенту,
26
</listitem>
27
28
<listitem>
29
перекодироваться могут только однобайтные кодировки
30
</listitem>
31
32
<listitem>
33
или однобайтные кодировки в UTF-8 и обратно.
34
</listitem>
35
36
</list>
37
</para>
38
39
</section>
40
41
42
<section id="example" name="Пример конфигурации">
43
44
<para>
45
<example>
46
include conf/koi-win;
47
48
charset windows-1251;
49
source_charset koi8-r;
50
</example>
51
</para>
52
53
</section>
54
55
56
<section id="directives" name="Директивы">
57
58
<directive name="charset">
59
<syntax><value>кодировка</value> | <literal>off</literal></syntax>
60
<default>off</default>
61
<context>http</context>
62
<context>server</context>
63
<context>location</context>
64
<context>if в location</context>
65
66
<para>
67
Добавляет указанную кодировку в поле <header>Content-Type</header>
68
заголовка ответа.
69
Если эта кодировка отличается от указанной в директиве
70
<link id="source_charset"/>, то выполняется перекодирование.
71
</para>
72
73
<para>
74
Параметр <literal>off</literal> отменяет добавление кодировки
75
в поле <header>Content-Type</header> заголовка ответа.
76
</para>
77
78
<para>
79
Кодировка может быть задана с помощью переменной:
80
<example>
81
charset $charset;
82
</example>
83
В этом случае необходимо, чтобы все возможные значения переменной
84
присутствовали хотя бы один раз в любом месте конфигурации в виде
85
директив <link id="charset_map"/>, <link id="charset"/> или
86
<link id="source_charset"/>.
87
Для кодировок <literal>utf-8</literal>, <literal>windows-1251</literal>
88
и <literal>koi8-r</literal> для этого достаточно включить в конфигурацию
89
файлы <path>conf/koi-win</path>, <path>conf/koi-utf</path> и
90
<path>conf/win-utf</path>.
91
Для других кодировок можно просто сделать фиктивную таблицу перекодировки,
92
например:
93
<example>
94
charset_map iso-8859-5 _ { }
95
</example>
96
</para>
97
98
<para>
99
Кроме того, кодировка может быть задана в поле <header>X-Accel-Charset</header>
100
заголовка ответа.
101
Эту возможность можно запретить с помощью директив
102
<link doc="ngx_http_proxy_module.xml" id="proxy_ignore_headers"/>,
103
<link doc="ngx_http_fastcgi_module.xml" id="fastcgi_ignore_headers"/>,
104
<link doc="ngx_http_uwsgi_module.xml" id="uwsgi_ignore_headers"/>,
105
<link doc="ngx_http_scgi_module.xml" id="scgi_ignore_headers"/>
106
и
107
<link doc="ngx_http_grpc_module.xml" id="grpc_ignore_headers"/>.
108
</para>
109
110
</directive>
111
112
113
<directive name="charset_map">
114
<syntax block="yes"><value>кодировка1</value> <value>кодировка2</value></syntax>
115
<default/>
116
<context>http</context>
117
118
<para>
119
Описывает таблицу перекодирования из одной кодировки в другую.
120
Таблица для обратного перекодирования строится на основании тех же данных.
121
Коды символов задаются в шестнадцатеричном виде.
122
Неописанные символы в пределах 80-FF заменяются на “<literal>?</literal>”.
123
При перекодировании из UTF-8 символы, отсутствующие в однобайтной кодировке,
124
заменяются на “<literal>&amp;#XXXX;</literal>”.
125
</para>
126
127
<para>
128
Пример:
129
<example>
130
charset_map koi8-r windows-1251 {
131
C0 FE ; # small yu
132
C1 E0 ; # small a
133
C2 E1 ; # small b
134
C3 F6 ; # small ts
135
...
136
}
137
</example>
138
</para>
139
140
<para>
141
При описании таблицы перекодирования в UTF-8, коды кодировки UTF-8 должны
142
быть указаны во второй колонке, например:
143
<example>
144
charset_map koi8-r utf-8 {
145
C0 D18E ; # small yu
146
C1 D0B0 ; # small a
147
C2 D0B1 ; # small b
148
C3 D186 ; # small ts
149
...
150
}
151
</example>
152
</para>
153
154
<para>
155
Полные таблицы преобразования из <literal>koi8-r</literal> в
156
<literal>windows-1251</literal> и из <literal>koi8-r</literal> и
157
<literal>windows-1251</literal> в <literal>utf-8</literal>
158
входят в дистрибутив и находятся в файлах <path>conf/koi-win</path>,
159
<path>conf/koi-utf</path> и <path>conf/win-utf</path>.
160
</para>
161
162
</directive>
163
164
165
<directive name="charset_types">
166
<syntax><value>mime-тип</value> ...</syntax>
167
<default>text/html text/xml text/plain text/vnd.wap.wml
168
application/javascript application/rss+xml</default>
169
<context>http</context>
170
<context>server</context>
171
<context>location</context>
172
<appeared-in>0.7.9</appeared-in>
173
174
<para>
175
Разрешает работу модуля в ответах с указанными MIME-типами
176
в дополнение к “<literal>text/html</literal>”.
177
Специальное значение “<literal>*</literal>” соответствует любому MIME-типу
178
(0.8.29).
179
</para>
180
181
<para>
182
<note>
183
До версии 1.5.4 по умолчанию вместо MIME-типа
184
<literal>application/javascript</literal>” использовался
185
<literal>application/x-javascript</literal>”.
186
</note>
187
</para>
188
189
</directive>
190
191
192
<directive name="override_charset">
193
<syntax><literal>on</literal> | <literal>off</literal></syntax>
194
<default>off</default>
195
<context>http</context>
196
<context>server</context>
197
<context>location</context>
198
<context>if в location</context>
199
200
<para>
201
Определяет, выполнять ли перекодирование для ответов,
202
полученных от проксированного сервера или от FastCGI/uwsgi/SCGI/gRPC-сервера,
203
если в ответах уже указана кодировка в поле <header>Content-Type</header>
204
заголовка ответа.
205
Если перекодирование разрешено, то в качестве исходной кодировки
206
используется кодировка, указанная в полученном ответе.
207
<note>
208
Необходимо отметить, что если ответ был получен в подзапросе,
209
то, независимо от значения директивы <literal>override_charset</literal>,
210
всегда выполняется перекодирование из кодировки ответа в кодировку
211
основного запроса.
212
</note>
213
</para>
214
215
</directive>
216
217
218
<directive name="source_charset">
219
<syntax><value>кодировка</value></syntax>
220
<default/>
221
<context>http</context>
222
<context>server</context>
223
<context>location</context>
224
<context>if в location</context>
225
226
<para>
227
Задаёт исходную кодировку ответа.
228
Если эта кодировка отличается от указанной в директиве
229
<link id="charset"/>, то выполняется перекодирование.
230
</para>
231
232
</directive>
233
234
</section>
235
236
</module>
237
238