懒惰地用NGINX提供Django静态内容

时间:2013-05-13 17:52:09

标签: django nginx

假设我的Django代码植根于/var/my_app。我在MEDIA_ROOT处配置了/var/my_app/filesMEDIA_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)提供服务(如果它们尚不存在)。

0 个答案:

没有答案