假设我的 Django 代码植根于/var/my_app
. 我有一个MEDIA_ROOT
配置在/var/my_app/files
,MEDIA_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
),如果它们尚不存在。