Nginx

我需要配置在 nginx 中顯示的 SVG 圖像嗎?

  • November 29, 2019

我在一個文件夾中有 SVG 圖像,還有一個 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 文件這樣的頁面上顯示?

將 SVG 添加image/svg+xml svg svgz;到您的 mime 類型/etc/nginx/mime.types並重新載入您的 Nginx。

當 Nginx 無法辨識.svg文件的 mime 類型時,它會為它們提供內容類型標頭content-type: text/plain,您的瀏覽器可能不會呈現它們,或者可能會向 Web 控制台發出警告。

  1. 確保/etc/nginx/mime.types為 svg 圖像定義 mime 類型:
types {
 ...
 image/svg+xml   svg svgz;
 ...
}
  1. 確保在 http 塊中/etc/nginx/nginx.conf包含該文件:mime.types
http {
 include mime.types;
 ...
}
  1. 在終端中檢查您的新 nginx 配置是否沒有錯誤:
sudo nginx -t
  1. 重啟 NGINX 以使更改生效
sudo systemctl restart nginx   // e.g.: ubuntu
  1. 在網路標頭下的瀏覽器開發工具中,檢查 svg 文件是否與標頭一起提供,Content-Type: image/svg+xml並可能硬刷新您的網頁以更新瀏覽器記憶體。

引用自:https://serverfault.com/questions/874597