Как я могу убедиться, что Nginx загружает незашифрованные текстовые файлы вместо встроенных?

У меня есть приложение Rails (Redmine), которое работает с Nginx. Если я нажимаю на какое-либо вложение, мой браузер (Firefox, т.е. Chrome) попросит меня загрузить файл. Но если я нажимаю на вложение типа txt, мой браузер открывает этот файл в браузере.

Как я понимаю, решить задачу Nginx - открыть файл в браузере или скачать его. Как я могу настроить это?

3 ответа

Решение

Тип по умолчанию для расширения txt- text / plain. Это поведение описано в файле mime.types. Используйте http://nginx.org/en/docs/http/ngx_http_core_module.html или http://nginx.org/en/docs/http/ngx_http_core_module.html чтобы переопределить его (возможно, для application / octet-поток).

Изменение Content-Type из .txt файлы могут работать, но это несколько рискованный способ решения этой проблемы, потому что вы не можете на 100% гарантировать, что браузер пользователя отреагирует так, как вы ожидаете. И, кроме того, вводить в заблуждение .txt файл в виде двоичного файла.

Вместо этого я предлагаю использовать стандартный способ заставить браузер загружать, а не отображать файл, который должен использовать Content-Disposition заголовок со значением attachment ( RFC 2183, см. Также RFC 2616).

Например, это nginx location блок отправит такой заголовок с .txt файлы под /downloads/ URI и, следовательно, они будут вынуждены скачать:

location ~ ^/downloads/.*\.txt$ {
  add_header Content-Disposition "attachment";
}

Таким образом, вы можете добавить другие соответствующие соответствия и т. Д., Соответствующие вашей конфигурации.

Вам нужно извлечь местоположение для загружаемого файла и установить их тип контента как application/octet-stream,

В нашем сервисе есть следующий каталог для загрузки промоматериала (который включает в себя PDF-файлы, изображения и некоторые документы, но я уверен, что он будет работать и с TXT-файлами):

location /promomaterial/download/ {
         add_header Content-Type application/octet-stream;
}

Каждый браузер, который мы пробовали, загружает все файлы из этого места, а не пытается их отобразить.

Другие вопросы по тегам