Это может быть браузер, обращающий больше внимания на Content-Type
, чем заголовок Content-Disposition
.Вы можете установить Content-Type
на application/octet-stream
, чтобы заставить браузер загружать файл.
Правильный способ установки Content-Type
- это директивы types
и default_type
.Но эти директивы не могут появляться внутри блока if
.Подробнее см. в этом документе и в этом документе .
Мой обходной путь использует внутренний префикс URI /download/
для реализации дополнительной логики:
location ~* ^/.+\.(?:gif|jpe?g|png|mp4)$ {
autoindex off;
if ($arg_dl = "1") {
rewrite ^(.*)$ /download$1 last;
}
}
location ^~ /download {
internal;
alias /path/to/files;
types {}
expires -1;
default_type application/octet-stream;
}