nginx不会提供.svg文件

问题描述 投票:0回答:2

我是nginx的新手,我只是想在我的覆盆子pi 3A +上设置一个简单的静态内容示例,但我无法让它为svg文件服务。在下面的示例中,png图像显示正常,但svg文件仅显示alt文本。我已经查看了文档以及我能找到的所有论坛,并且我已经尝试了所有内容 - 没有运气。我尝试从localhost和我的局域网上的另外两台电脑上浏览这个 - 结果相同。为什么nginx会提供png文件,但不是svg?相同的目录,配置,权限等我测试了svg文件 - 它们没有损坏或任何东西。如果我将本地浏览器指向那个没有通过nginx的目录,我可以查看它们。

Here's the /etc/nginx/nginx.conf file

user pi; 
events{} 

http { 

  server { 
    listen 80; 
    server_name localhost; 
    root /home/pi/DigitalClock/dcvenv; 
    index /static/index.html; 

  location / { 
    autoindex on; 
  } 
  } 
} 

The entry in the /etc/nginx/mime.types file is (i did not alter the file at all)

image/svg+xml svg svgz; 

here's my /static/index.html

<html> 
<img src="/static/admin/img/pic01.png" alt="Search"></label> 
<img src="/static/admin/img/icon-yes.svg" alt="icon yes"></label> 
<img src="/static/admin/img/search.svg" alt="icon yes"></label> 
<img src="/static/admin/img/sorting-icons-yes.svg" alt="icon yes"></label> 
</html> 

所有文件都存在于指定的目录中,权限从root开始设置为相同的所有者= rwx,group = x,other = x

nginx start command: sudo service nginx start

Here are the svg files. the first one works, 2nd one doesn't

1st svg

<svg width="14" height="84" viewBox="0 0 1792 10752" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <g id="sort">
      <path d="M1408 1088q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45zm0-384q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 4$
    </g>
    <g id="ascending">
      <path d="M1408 1216q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/>
    </g>
    <g id="descending">
      <path d="M1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z"/>
    </g>
  </defs>
  <use xlink:href="#sort" x="0" y="0" fill="#999999" />
  <use xlink:href="#sort" x="0" y="1792" fill="#447e9b" />
  <use xlink:href="#ascending" x="0" y="3584" fill="#999999" />
  <use xlink:href="#ascending" x="0" y="5376" fill="#447e9b" />
  <use xlink:href="#descending" x="0" y="7168" fill="#999999" />
  <use xlink:href="#descending" x="0" y="8960" fill="#447e9b" />
</svg>

2nd svg - does not work

<svg width="15" height="15" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
  <path fill="#555555" d="M1216 832q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 52-38 90t-90 38q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5$
</svg>

The mystery deepens

很奇怪。 / img目录中有3个svg文件无法呈现(其他所有文件都正常工作):

  1. search.svg
  2. tooltag-add.svg
  3. 图标yes.svg

这是奇怪的部分。如果将这些文件重命名为任何其他名称,则更改index.html以引用新名称,它们呈现得很好。这些名字有什么奇怪的吗? nginx是否会以某种方式寻找其他名称?这对我来说毫无意义。

我想确保看到我所看到的东西。 search.svg不呈现。我将文件名更改为search2.svg,然后在index.html文件中更改了它。工作良好。然后我把它改回了两个中的search.svg - 不起作用。令人惊讶的是文件名导致了这一点。任何人??????

nginx svg static
2个回答
3
投票

确保你在mime.types部分确实包括http { ... }

include /etc/nginx/mime.types;

如此完整的配置:

user pi; 
events{} 

http { 

  include /etc/nginx/mime.types;

  server { 
    listen 80; 
    server_name localhost; 
    root /home/pi/DigitalClock/dcvenv; 
    index /static/index.html; 

  location / { 
    autoindex on; 
  } 
  } 
} 

1
投票

用ctrl f5清除浏览器缓存修复了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.