无法在服务器上提供静态内容“图像”-Nginx Ubuntu

时间:2018-11-30 16:50:35

标签: angular nginx

我试图从服务器上的某个位置提供图像,而不是将它们放在我的部署目录下,即应用程序的部署位置。

我的应用库已部署到/opt/myapp 我创建了一个文件夹/opt/myapp-images,并将所有图像放在其下。完整路径类似于/opt/myapp-images/assets/images/folder1/fruit.png,并且图像下有不同的文件夹。

我可以访问直到/opt/myapp-images/assets/images/folder1/的路径,并在浏览器中看到该图像,但是如果我单击该图像,它将显示404 error

尝试了很多事情,但似乎没有任何作用。

以下是我的nginx conf文件-

root /opt/myapp/dist/browser;

location / {
        try_files $uri $uri @backend;
}

location /assets/images {
        autoindex on;
        alias  /opt/myapp-images/assets/images;
       } 

location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
          expires 7d;
      }

在我的html中,我有类似"src="/assets/images/folder1/fruit.png"

的路径

不确定我在做什么错。如果需要其他信息,请记住。

1 个答案:

答案 0 :(得分:1)

Nginx从locationprocess a request中选择一个。当前,任何以.png结尾的URI都由最后一个location块处理,对于以/assets/images开头的URI,该块的文档根目录错误。

使用^~修饰符使前缀location优先于正则表达式位置。有关详细信息,请参见this document

例如:

location ^~ /assets/images {
    autoindex on;
    root /opt/myapp-images;
    expires 7d;
}

如果它也适用于这些URI,请在此处添加expires指令。

如果可以的话,最好使用root而不是alias。有关详细信息,请参见this document