簡體   English   中英

在啟用了secure_link模塊的情況下從Nginx上的URL設置文件名

[英]Set filename from URL on Nginx with secure_link module enabled

我的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";
    }

我應該如何編輯我的配置以便能夠下載包含上面的file參數構造的URL的文件?

謝謝!

編輯:修正了我的代碼中的拼寫錯誤之后,現在我可以下載文件而不會在403出現死角。但是,我無法使文件名起作用。

編輯2:修復它

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

是問題的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM