В моей настройке nginx 0.8.34 я использую функцию X-Accel-Redirect для управления загрузками файлов в коде приложения, в то время как приложение не управляет самой загрузкой.
После большой боли это теперь в основном работает, за исключением того, что nginx всегда возвращает файл с text/html
типом содержимого.
Тип содержимого по умолчанию - application / octet-stream, указанный в http
блоке.
Блок сервера содержит, помимо прочего, определение каталога, в котором хранятся файлы:
location /files {
default_type application/octet-stream;
alias /srv/www/uploads;
internal;
}
Таким образом, я указал тип контента даже здесь, но ничего не изменилось.
Я не хочу устанавливать Content-Type приложением, потому что тогда я буду тормозить меня (сначала я должен определить это). Поэтому в идеале nginx должен возвращать правильный mimetype в зависимости от расширения файла (я включаю mime.types в http
блок).
Лично я просто установил application / octet-stream в приложении, но вы могли бы использовать fastcgi_ignore_headers, чтобы Nginx не использовал предоставленный внутренним заголовок.
источник
Content-Type
. По wiki.nginx.org/HttpFcgiModule#fastcgi_ignore_headers возможные значенияX-Accel-Redirect
,X-Accel-Expires
,Expires
илиCache-Control
nginx: [warn] invalid value "Content-Type" in /etc/nginx/conf.d/default.conf:27
ноfastcgi_ignore_headers "Expires"
работаетс php-fpm:
говорит php вообще не отправлять заголовок Content-Type (даже пустой), и nginx угадывает тип для вас и добавляет заголовок :)
источник