デフォルトの mime.types ファイルを編集せずに追加する方法
まずダメな例から。以下のように設定するとうまく動作しなくなる
server { # 省略 types { application/javascript mjs; } }
このように書くと、このバーチャルホストではデフォルトのtypes設定全体が上書きされ、.mjs以外のファイルは全てContent-Type: application/octet-stream
で返されるようになってしまう。
デフォルト設定を残しつつ追加するには、デフォルト設定と同一のコンテキストに書かなくてはならない
nginx.confを見ると・・・
http { include /etc/nginx/mime.types; default_type application/octet-stream; # 省略 include /etc/nginx/conf.d/*.conf; }
デフォルトの設定が記述されているmime.typesはhttpコンテキストで読み込まれているので、追加のMIME typeもhttpコンテキストに記述すればいい。具体的には/etc/nginx/conf.d/mime.conf
というファイルを作成して、そこに書く。
# /etc/nginx/conf.d/mime.conf types { application/javascript mjs; }
これでデフォルトの設定を壊さずに追加される
バーチャルホスト設定の中に書くのであれば、locationで拡張子mjsの場合にtypesを上書きするように設定する。このlocationにマッチしたリクエストの処理ではデフォルトのMIME type設定は全て上書きされてしまうが、mjsしか返さないので問題ない。
server { # 省略 location ~* \.mjs$ { types { application/javascript mjs; } } }