在启用了secure_link模块的Nginx上从URL设置文件名

时间:2015-02-20 13:55:41

标签: nginx arguments

我的Nginx虚拟主机中有以下secure_link配置:

...

secure_link $arg_st,$arg_e;
secure_link_md5 SECRET$uri$remote_addr$arg_e;
...

现在,当PHP脚本构造的URL如下所示时,上述工作正常:

http://example.com/example_file?st=dzQUOtu5fLZTgBQtQkg8JA&e=1424446841

我的问题是我需要将文件名作为参数传递,因此URL应该在以下行中:

http://example.com/example_file?st=dzQUOtu5fLZTgBQtQkg8JA&e=1424446841&file=example.zip

但这会返回403。 如果没有secure_link模块,我通常会选择

        if ($args ~* ^file=(.*)$)
    {
        set $filename $1;
        add_header Content-Disposition "attachment; filename=$filename";
    }

我应该如何编辑我的配置,以便能够使用包含上述文件参数的URL下载文件?

谢谢!

修改 在我的代码中修正了拼写错误之后,我现在能够在403处下载该文件而不会达到死胡同。 但是,我无法获取文件名。

编辑2:修正了

rewrite ^/(.*)$ /$1 break;
add_header Content-Disposition "attachment; filename=$arg_file";

1 个答案:

答案 0 :(得分:1)

rewrite ^/(.*)$ /$1 break;
add_header Content-Disposition "attachment; filename=$arg_file";

是问题的答案。