我想使用Nginx作为文件托管系统的CDN。我看到了一个很棒的nginx模块,它允许postgres连接(https://github.com/FRiCKLE/ngx_postgres)它工作得非常好,但是当我尝试使用它时有alias指令它似乎忽略别名或文件下载而是给我一个空文件。 我的想法是,使用URL中的UUID并找到执行查询的正确文件,然后使用找到的详细信息更改文件名标题,以便用户的客户端将下载自动将名称设置为原始文件名而不是一个uuid。
这是代码。
location /dl{
postgres_output none;
postgres_pass database;
postgres_query "SELECT * FROM \"Files\" WHERE uuid = '$args'";
postgres_set $filename 0 name;
alias /home/ubuntu/fileStorage;
add_header Content-Disposition "attachment; filename=$filename";
}
我认为postgres指令不知何故锁定了这个块。有没有办法在不影响下载块的情况下运行postgres查询?
答案 0 :(得分:0)
似乎你期待这条线
add_header Content-Disposition "attachment; filename=$filename";
将导致浏览器下载$filename
给出的文件。这不是Content-Disposition标头的工作方式,它只是告诉浏览器将响应主体解释为文件。您将不得不做一些额外的事情来获取客户端的正确内容。也许您真正想要的是发布重定向?