0

假设我的 Django 代码植根于/var/my_app. 我有一个MEDIA_ROOT配置在/var/my_app/filesMEDIA_URL并且/var/my_app/files/files。通过 UWSGI(或 gunicorn 等)提供这些文件可以正常工作。

现在我正在尝试使用 NGINXtry_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,但显然我误解了一些东西。

作为参考,这里是 Djangolocation块:

location / {
  include               uwsgi_params;
  uwsgi_param           UWSGI_SETENV DATABASE_URL=[redacted]
  uwsgi_pass            127.0.0.1:3034;
}

添加上下文

此配置旨在延迟提供 Django 生成的缩略图(使用easy-thumbnails),如果它们尚不存在。

4

0 回答 0