如果你想折磨某人直到时间结束,只需让他们配置 Django 和 Nginx X-Accel-Redirect 即可。这实际上是不可能的,我已经尝试了很多天了。
我试图只允许在 webfaction 上使用 Nginx 从 django 中的登录视图下载某些文件。这是我所拥有的:
自定义 Nginx 应用程序侦听 /static 下的端口 27796。这是会议。
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 27796;
server_name myurl.com;
root /home/ucwsri/webapps/static_media_ucwsri_nginx;
location / {
autoindex on;
}
location ^.*/protected-files {
internal;
alias /home/ucwsri/webapps/static_media_ucwsri_nginx/protected;
}
所有静态内容都位于 /home/ucwsri/webapps/static_media_ucwsri_nginx 中,并且由该 Nginx 应用程序正确提供服务。
我想要保护的文件在这里:
/home/ucwsri/webapps/static_media_ucwsri_nginx/protected
这是 Nginx 中位置 ^.*/protected-files 块下列出的别名。
该视图只是简单地生成一个 Http 响应:
response = HttpResponse()
url = "/static/protected-files/some-file.pdf"
response['X-Accel-Redirect'] = url
return response
“some-file.pdf”文件存在于的位置
/home/ucwsri/webapps/static_media_ucwsri_nginx/protected
无论我尝试什么,当我尝试以 POST 请求的形式获取该文件并转到该视图时,我都会从 Nginx 收到 404 错误。我已经尝试了我能想到的一切,每个位置组合块,都不起作用。始终是 404。
请有人让我摆脱痛苦并告诉我我做错了什么。对于看似简单的事情来说,这确实是残酷的。