nginx で json ファイルを静的にサービスする

デフォルトでは JSON に mime タイプが設定されていないので、/etc/nginx/mime.types

application/json json;

を追加する。

ChromeSafari では Content-Type ヘッダに Charset がないと JSON 内に ASCII 文字以外が入った場合にパースエラーになってしまう(Firefox では問題ない)。

追加された mime タイプは charset_types に当然ないので nginx conf に以下の設定を追加する。

    charset UTF-8;
    charset_types application/json;

これでレスポンスヘッダに Content-Type:application/json; Charset=UTF-8 が付く。

How to enable correct charset HTTP-header in NGINX - Server Fault