nginx如何提供图片或媒体文件?

时间:2018-01-23 01:56:25

标签: nginx

我在使用nginx提供图片时遇到问题。我最初是从一个Django项目开始的,我想通过nginx为用户上传的媒体文件提供服务,但无论我尝试什么,我都无法让它工作。

所以,我已经制作了第二个临时Droplet /服务器,我正在尝试一个没有Django项目的裸骨设置,只是Nginx,看看我是否可以让它只是在一个文件夹中提供一个索引和一些图片'媒体'。这是服务器块:

    server {
        listen 80;
        listen [::]:80;

        root /var/www/example.com/html;
        index index.html;

        server_name 159.89.141.121;

        location / {
                try_files $uri $uri/ =404;
        }

        location /media/ {
                root /var/www/example.com/media;
        }

}

现在,index.html服务正常但是如果我尝试转到159.89.141.121/media/testpic.jpg它仍然无效并返回404错误。我在这里完全失败,我尝试使用别名而不是root,我尝试更改文件夹结构并将所有权限设置为777并更改文件夹和文件所有权,权限应该不是问题,因为索引.html使用相同的权限工作正常;我似乎无法弄清楚我做错了什么。图片在文件夹中,但我尝试的任何内容都不允许我通过uri访问它。我的服务器块有明显的问题吗?

1 个答案:

答案 0 :(得分:0)

好吧我决定阅读文档并意识到位置块添加到指定的根目录.. 所以

的路径
`location /media/ {
                root /var/www/example.com/media;
        }` 

最终会将example.com/media/testpic.jpg路由到/var/www/example.com/media/media/testpic.jpg

我已将位置块更改为此类

location /images/ {
            root /var/www/example.com/media;
    }

它现在将example.com/images/testpic.jpg路由到/var/www/example.com/media/images/testpic.jpg

我不确定为什么当我尝试使用alias指令时它没有用,但是......