Nginxでtypesは上書きできるのか
nginx実践入門をちまちま進めている。今日は第3章を進めていたのだが、いくつか気になることがあったので検証してみた。
typesディレクティブの設定値は上書きできるか?
実践入門には、基本mime.types
をinclude
して、別途指定したい場合はmime.types
を直接修正する、みたいな感じで書いてあった。
個人的にはそういうのはmime.types
はそのままにしておいて、必要なものだけ上書きする形でできたらいいなあと思ったので、できないのか試してみた。
# ... http { include mime.types; types { text/html txt; } } # ...
結果、Nginxを起動した時点で以下の警告が出た。その上で上書きはされるようだ。うーん、その仕様はどうなのか……。
2018/04/19 11:27:35 [warn] 1833#1833: duplicate extension "txt", content type: "text/html", previous content type: "text/plain" in ./etc/nginx.conf:17
ググったところ、以下のようにする感じでハックできると出てきた。
# ... http { include mime.types; server { # ... location ~ \.txt$ { types { text/html txt; } } } } # ...
https://serverfault.com/questions/678673/nginx-how-to-override-add-single-mime-type
その後調べると、公式リファレンスにもあった。上記のとは違い、types
は空にして、default_type
を使ってる。
http://nginx.org/en/docs/http/ngx_http_core_module.html#types
これはこれで微妙……。
access_logは複数設定するとどうなるのか?
access_log
を同じように複数設定した場合の挙動が気になったのでこれも一応確認してみた。予想通り、複数のファイルにアクセスログを出力してくれる。便利。
複数回同じディレクティブを書いた場合の挙動もちゃんと公式リファレンスに書かれてるとよかったんだが。