Здравствуйте!
Прошу прощения за недостаточно точный вопрос. Ожидал, что просто уперся в какую-то настройку.
Версия 1.8.0, Linux (Ubuntu).
Конфиг:
location /_download {
alias /var/fnc_storage;
internal;
}
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host localhost:8088;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://localhost:8088;
}
Приложение генерирует заголовки:
X-Accel-Redirect: /_download/12345
Content-Disposition: attachment; filename="Odrin_Metod_morfologicheskogo_analiza_texnicheskix_sistem_k.doc"; filename*=UTF-8''%D0%9E%D0%B4%D1%80%D0%B8%D0%BD_%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%20%D0%BC%D0%BE%D1%80%D1%84%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE%20%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%20%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC_k.doc
(в соответствии с RFC5987).
Когда имя файла небольшое - и в кодированном виде длина заголовка меньше примерно 256 (если не ошибся, то почему-то граница 258, а не 256), то всё проходит верно - Nginx отдаёт файл по пути _download и пропускает заголовок Content-Disposition, сформированный приложением.
Но вот для приведенного примера заголовка, когда имя файла длинное,
Nginx вместо Content-Disposition, полученного от приложения, отдает
Content-Disposition: "/_download/39"
Стоит всего лишь несколько укоротить приведённый выше заголовок, как начинает проходить нормально.