我在使用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访问它。我的服务器块有明显的问题吗?
答案 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指令时它没有用,但是......