ngx_http_charset_module モジュール
設定例 ディレクティブ charset charset_map charset_types override_charset source_charset |
ngx_http_charset_module
モジュールは、応答の"Content-Type"ヘッダフィールドに指定した文字セットを追加します。更にモジュールはいくらかの制限はありますが、ある文字セットから他のものへデータを変換することができます:
- 変換は一方通行 - サーバからクライアント で実行されます。
- シングルバイト文字セットだけが変換されるか、
- またはシングルバイト文字セットとUTF-8間で変換されます。
設定例
include conf/koi-win; charset windows-1251; source_charset koi8-r;
ディレクティブ
構文: |
charset |
---|---|
デフォルト: |
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 |
---|---|
デフォルト: | - |
コンテキスト: |
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文字セットのためのコードが二つ目のカラムに指定されなければなりません。例えば:
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 |
---|---|
デフォルト: |
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/x-javascript
"が"application/javascript
"の代わりにデフォルトのMIMEタイプとして使われていました。
構文: |
override_charset |
---|---|
デフォルト: |
override_charset off; |
コンテキスト: |
http , server , location , if in location |
プロキシされたあるいはFastCGI/uwsgi/SCGI/gRPCサーバから受け取った応答が"Content-Type"応答フィールドに既に文字セットを含んでいる場合に、変換を行うべきかどうかを決定します。変換が有効な時には、受け取った応答で指定さえた文字セットをソースの文字セットとして扱います。
もしサブリクエストで応答を受け取った場合には、override_charset
ディレクティブの設定に関係なく、応答の文字セットからメインのリクエストの文字セットへの変換が常に行われることに注意してください。
構文: |
source_charset |
---|---|
デフォルト: | - |
コンテキスト: |
http , server , location , if in location |
応答のソースの文字セットを定義します。もし文字セットがcharset ディレクティブで指定されたものと異なる場合には、変換が行われます。