Модуль ngx_http_charset_module
Модуль ngx_http_charset_module добавляет указанный кодировку в поле заголовка ответа «Content-Type». Кроме того, модуль может преобразовывать данные из одной кодировки в другую, с некоторыми ограничениями:
- преобразование выполняется в одном направлении — от сервера к клиенту,
- могут преобразовываться только однобайтовые кодировки
- или однобайтовые кодировки в/из UTF-8.
Пример конфигурации
include conf/koi-win; charset windows-1251; source_charset koi8-r;
Директивы
| Синтаксис: | 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 и grpc_ignore_headers.
| Синтаксис: | charset_map charset1 charset2 { ... } |
|---|---|
| По умолчанию: | — |
| Контекст: | http |
Описывает таблицу преобразования из одной кодировки в другую. Обратная таблица преобразования строится по тем же данным. Коды символов указаны в шестнадцатеричном формате. Отсутствующие символы в диапазоне 80-FF заменяются на «?». При преобразовании из 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 и windows-1251 в utf-8 предоставлены в файлах дистрибутива conf/koi-win, conf/koi-utf, и conf/win-utf.
| Синтаксис: | 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 типами помимо «text/html». Специальное значение «*» соответствует любому MIME типу (0.8.29).
До версии 1.5.4, «application/x-javascript» использовалось в качестве значения MIME типа по умолчанию вместо «application/javascript».
| Синтаксис: | override_charset on | off; |
|---|---|
| По умолчанию: | override_charset off; |
| Контекст: | http, server, location, if in location |
Определяет, должно ли выполняться преобразование для ответов, полученных от прокси-сервера или сервера FastCGI/uwsgi/SCGI/gRPC, когда ответы уже содержат кодировку в заголовке ответа «Content-Type». Если преобразование включено, кодировка, указанная в полученном ответе, используется как исходная кодировка.
Следует отметить, что если ответ получен в подзапросе, то преобразование из кодировки ответа в кодировку основного запроса всегда выполняется, независимо от настроек директивы override_charset .
| Синтаксис: | source_charset charset; |
|---|---|
| По умолчанию: | — |
| Контекст: | http, server, location, if in location |
Определяет исходную кодировку ответа. Если эта кодировка отличается от кодировки, указанной в директиве charset, выполняется преобразование.
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_charset_module.html