nginxにMIME typeを追加する
デフォルトの 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;
}
}
}