假设我的Django代码植根于/var/my_app
。我在MEDIA_ROOT
处配置了/var/my_app/files
,MEDIA_URL
处的/var/my_app/files
为/files
。通过UWSGI(或gunicorn等)提供这些文件可以正常工作。
现在我正在尝试使用NGINX try_files
指令来服务它们而不会遇到UWSGI。这就是我所拥有的:
location /files/* {
try_files /var/my_app$uri $uri;
}
我的理解是,如果我尝试访问$hostname/files/photos/thumbs/file.jpg
,则上述location
次匹配,$uri
为/files/photos/thumbs/file.jpg
,NGINX测试/var/my_app/files/photos/thumbs/file.jpg
并且应该如果文件存在则返回该文件。
相反,当我访问该URI时,我看到请求在UWSGI日志中传递给UWSGI,即使该文件存在于/var/my_app/files/photos/thumbs/file.jpg
。我究竟做错了什么?我在try_files
上阅读了文档,但很明显我误解了一些东西。
作为参考,这里是Django location
块:
location / {
include uwsgi_params;
uwsgi_param UWSGI_SETENV DATABASE_URL=[redacted]
uwsgi_pass 127.0.0.1:3034;
}
已添加上下文
此配置的目标是懒惰地为Django生成的缩略图(使用easy-thumbnails
)提供服务(如果它们尚不存在)。