Назад | Перейти на главную страницу

Нужно ли мне настраивать изображения SVG, отображаемые в nginx?

У меня есть изображения 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?

Когда Nginx не распознает тип mime для .svg файлы, он обслуживает их с заголовком типа содержимого content-type: text/plain и ваш браузер может не отображать их или может выдавать предупреждение на веб-консоль.

  1. Гарантировать, что /etc/nginx/mime.types определяет тип mime для изображений svg:

    types {
      ...
      image/svg+xml   svg svgz;
      ...
    }
    
  2. Гарантировать, что /etc/nginx/nginx.conf включает mime.types файл в блоке http:

    http {
      include mime.types;
      ...
    }
    
  3. В терминале проверьте, что ваша новая конфигурация nginx не содержит ошибок:

    sudo nginx -t
    
  4. Перезапустите NGINX, чтобы изменения вступили в силу.

    sudo systemctl restart nginx   // e.g.: ubuntu
    
  5. В инструментах разработчика вашего браузера под заголовками сети убедитесь, что файлы svg обслуживаются с заголовком Content-Type: image/svg+xml и, возможно, обновите вашу веб-страницу, чтобы обновить кеш браузера.

Добавить SVG image/svg+xml svg svgz; к вашим пантомима в /etc/nginx/mime.types и перезагрузите Nginx.