フォルダーにSVG画像があり、これらの画像がページに表示されるように1つのPNGファイルもあります。
私のnginx設定は基本的にこれです:
server {
listen 80;
location / {
root www;
}
}
画像はwww/images
フォルダにあります。
私が見ているのは、ページ内の同じ構造です。
<img src="images/logo.svg">
<img src="images/logo.png">
PNGファイルは期待どおりにページに表示されますが、SVGは表示されません。ただし、ブラウザコード200の[ネットワーク]タブに表示されますが、本文は空です。
http://localhost/images/logo.svg
のように直接開こうとすると、ファイルとしてダウンロードするだけです。
SVGファイルをPNG/JPGファイルなどのページに表示できるようにするには、特別な設定を追加する必要がありますか?
image/svg+xml svg svgz;
のmimeタイプにSVG/etc/nginx/mime.types
を追加し、Nginxをリロードします。
Nginxが.svg
ファイルのmimeタイプを認識しない場合、コンテンツタイプヘッダーcontent-type: text/plain
でファイルを提供し、ブラウザがそれらをレンダリングしないか、Webコンソールに警告を発行する場合があります。
/etc/nginx/mime.types
がsvgイメージのmimeタイプを定義していることを確認します。
types {
...
image/svg+xml svg svgz;
...
}
/etc/nginx/nginx.conf
のhttpブロックにmime.types
ファイルが含まれていることを確認します。
http {
include mime.types;
...
}
ターミナルで、新しいnginx構成にエラーがないことを確認します。
Sudo nginx -t
変更を有効にするためにNGINXを再起動します
Sudo systemctl restart nginx // e.g.: ubuntu
ネットワークヘッダーの下にあるブラウザー開発ツールで、svgファイルがヘッダーContent-Type: image/svg+xml
で提供されていることを確認し、場合によってはWebページをハードリフレッシュしてブラウザーキャッシュを更新します。