モジュール ngx_http_charset_module

設定例
ディレクティブ
     charset
     charset_map
     charset_types
     override_charset
     source_charset

ngx_http_charset_module モジュールは、指定された文字セットをレスポンスヘッダーフィールド "Content-Type" に追加します。さらに、このモジュールは、いくつかの制限付きで、データをある文字セットから別の文字セットに変換できます。

設定例

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_mapcharset、またはsource_charset ディレクティブの形式で、設定内に少なくとも1回存在する必要があります。 utf-8windows-1251、およびkoi8-r 文字セットの場合、ファイル conf/koi-winconf/koi-utf、および conf/win-utf を設定に含めるだけで十分です。その他の文字セットの場合は、たとえば、以下のように架空の変換テーブルを作成するだけで機能します。

charset_map iso-8859-5 _ { }

さらに、文字セットは "X-Accel-Charset" レスポンスヘッダーフィールドで設定できます。この機能は、proxy_ignore_headersfastcgi_ignore_headersuwsgi_ignore_headersscgi_ignore_headers、および grpc_ignore_headers ディレクティブを使用して無効にすることができます。

構文 charset_map charset1 charset2 { ... }
デフォルト
コンテキスト http

ある文字セットから別の文字セットへの変換テーブルを記述します。同じデータを使用して逆変換テーブルが構築されます。文字コードは16進数で指定されます。80-FFの範囲にない文字は "?" に置き換えられます。UTF-8から変換する場合、1バイト文字セットにない文字は "&#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文字セットのコードは2番目の列に指定する必要があります。たとえば、次のようになります。

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-rwindows-1251 から utf-8 への完全な変換テーブルは、配布ファイル conf/koi-winconf/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で登場しました。

"text/html"に加えて、指定されたMIMEタイプのレスポンスでモジュール処理を有効にします。特殊な値 "*" は任意のMIMEタイプに一致します(0.8.29)。

バージョン1.5.4までは、"application/javascript" の代わりに "application/x-javascript" がデフォルトのMIMEタイプとして使用されていました。

構文 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 ディレクティブで指定された文字セットと異なる場合、変換が実行されます。