Dalam pengaturan nginx 0.8.34 saya, saya menggunakan fitur X-Accel-Redirect untuk mengontrol unduhan file dalam kode aplikasi sementara tidak ada aplikasi yang menangani unduhan itu sendiri.
Setelah banyak rasa sakit ini sekarang pada dasarnya berfungsi kecuali nginx selalu mengembalikan file dengan text/html
tipe konten.
Jenis konten default adalah application / octet-stream, ditentukan dalam http
blokir.
Blok server berisi, antara lain, definisi direktori tempat file disimpan:
location /files {
default_type application/octet-stream;
alias /srv/www/uploads;
internal;
}
Jadi saya menentukan jenis konten bahkan di sini tetapi tidak ada yang berubah.
Saya tidak ingin mengatur Content-Type oleh aplikasi karena saya akan memperlambat saya (pertama-tama saya harus menentukannya). Jadi idealnya nginx akan mengembalikan mimetype yang benar berdasarkan ekstensi file (saya menyertakan mime.types di http
blok).
Saya pribadi hanya mengatur aplikasi / octet-stream dalam aplikasi tetapi Anda mungkin dapat menggunakan fastcgi_ignore_headers untuk mencegah Nginx dari menggunakan header yang disediakan back-end.
sumber
Content-Type
. Menurut wiki.nginx.org/HttpFcgiModule#fastcgi_ignore_headers nilai-nilai yang mungkin adalahX-Accel-Redirect
,X-Accel-Expires
,Expires
atauCache-Control
nginx: [warn] invalid value "Content-Type" in /etc/nginx/conf.d/default.conf:27
tetapifastcgi_ignore_headers "Expires"
bekerjadengan php-fpm:
memberitahu php untuk tidak mengirim header Tipe Konten sama sekali (bahkan bukan header kosong), dan nginx akan menebak jenisnya untuk Anda dan menambahkan header :)
sumber