🏍
Nginxでsvgz画像が表示されない
背景
Nginx + Laravel環境で開発していたところ、いくつかの画像がリンク切れを起こす。
調べてみると拡張子が.svgz
の画像のみリンク切れを起こしている。
画像リンクを別タブで開くとどうやらエンコードがうまく行っていない様子。
This page contains the following errors:
error on line 1 at column 1: Encoding error
Below is a rendering of the page up to the first error.
解決策
.conf
に以下の設定を追加
default.conf
location ~ \.svgz$ {
add_header Content-Encoding gzip;
}
.svgz
は.svg
をgzipで圧縮した形式で、ブラウザがデコードできるようヘッダーにエンコード形式を付与する必要がある。
補足
Nginxのlocationディレクティブはprefix(上記では~
の部分)に応じてlocationの優先順位が変わるため、複数のlocationディレクティブが存在し、狙ったヘッダーが付与されない場合は評価順を見直して見ると良いかもしれない。
参考
Discussion