W mojej konfiguracji nginx 0.8.34 korzystam z funkcji X-Accel-Redirect, aby kontrolować pobieranie plików w kodzie aplikacji, ale aplikacja nie obsługuje samego pobierania.
Po dużym bólu działa to teraz w zasadzie, z wyjątkiem tego, że nginx zawsze zwraca plik z text/html
typem zawartości.
Domyślny typ zawartości to application / octet-stream, określony w http
bloku.
Blok serwera zawiera między innymi definicję katalogu, w którym przechowywane są pliki:
location /files {
default_type application/octet-stream;
alias /srv/www/uploads;
internal;
}
Podałem więc typ zawartości nawet tutaj, ale nic się nie zmieniło.
Nie chcę ustawiać typu zawartości według aplikacji, ponieważ wtedy spowolniłbym (najpierw musiałbym to określić). Idealnie więc nginx zwróciłby prawidłowy typ mimetyczny na podstawie rozszerzenia pliku (w http
bloku dołączam mime.types ).
Ja osobiście po prostu ustawić application / octet-stream w aplikacji, ale może być w stanie wykorzystać fastcgi_ignore_headers aby zapobiec Nginx z pomocą back-end dostarczonego nagłówek.
źródło
Content-Type
. Według wiki.nginx.org/HttpFcgiModule#fastcgi_ignore_headers możliwych wartościX-Accel-Redirect
,X-Accel-Expires
,Expires
lubCache-Control
nginx: [warn] invalid value "Content-Type" in /etc/nginx/conf.d/default.conf:27
alefastcgi_ignore_headers "Expires"
działaz php-fpm:
mówi php, aby w ogóle nie wysyłał nagłówka Content-Type (nawet pustego), a nginx zgadnie typ dla Ciebie i doda nagłówek :)
źródło