-
Website
http://blog.kovyrin.net -
Original page
http://blog.kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/ -
Subscribe
All Comments -
Community
-
Top Commenters
-
for you health
3 comments · 1 points
-
jamiew
1 comment · 6 points
-
qu1j0t3
1 comment · 1 points
-
mkv to dvd
1 comment · 1 points
-
Scoundrel
9 comments · 1 points
-
-
Popular Threads
I have add it to the wiki site http://wiki.codemongers.com/NginxXSendfile
я реализовал контролируемые скачивания, но есть одна проблема - nginx со всеми файлами передает заголовок text/html, и браузер его соответственно открывает. не подскажете, с чем это может быть связано, и как испраить?
4to-bu zapretit - powli pustoj $r->send_http_header();
I have thanslated it into Simplified-Chinese:
http://bianbian.sunshow.net/index.php/technolog...
enjoy~
Это может быть потому, что процесс выдает ошибку "500 No template for action download"
так как ошибка выводится в html, то она подменяет заголовок на text/html.
проверьте логи ruby
rewrite ^/download/(.*)$ /down.php?path=$1 last;
2 Andrey Popov:
Попробуй перед редиректом (X-Accel-Redirect) отдавать заголовок руками т.е.:
Content-type: application/octet-stream
This confuses me because you have to render something....?
I have nginx setup and I am setting the header, but then what? render :text => ""???
anyway, i use this to make pdf downloads work:
location /download_control/ {
root ...;
default_type application/pdf;
expires 1h;
add_header Cache-Control private;
internal;
}
Otherwise, I've been very happy with nginx and this download control mechanism (and I've written a radiant plugin to make use of it, which should appear soon). thank you.
http://spongetech.wordpress.com/2007/11/13/the-...
Как оказалось, это заголовок по умолчанию, который выдает сам PHP скрипт, и nginx его уже не трогает.
Выход довольно прост, надо запретить PHP выдавать этот заголовок, например, так:
ini_set('default_mimetype', '');
Если кто подскажет, как это сделать более элегантно - буду благодарен.
header("Content-Disposition: attachment; filename=\"" . $filename . "\"");
где $filename - имя файла (только имя, путь - отсутствует).
После этого все браузеры должны открывать окно с приглашением сохранить файл или открыть. Ну у MIME типы уже сам nginx отдаст если в его конфиге добавлено include conf/mime.types
502 Bad Gateway
nginx/0.5.33
При этом в PHP скрипт передается $path с запорченным окончанием - последние несколько символов заменены на 0x0. В error.log nginx'а при этом выдается сообщение:
upstream prematurely closed connection while reading response header from
upstream ...
Как с этим бороться?
>This confuses me because you have to render something….?
>I have nginx setup and I am setting the header, but then what? >render :text => “”???
render :nothing => true
С заголовками таки что-то не то - FF и IE отрабатывают нормально, а вот Опера упорно предлагает сохранить в html ...
<?php
header("Content-type: video/mpeg");
header("Content-Disposition: attachment; filename=\"file.mpeg\"");
//или подставить свой
Чтобы не задалбывали потоками reget, dmaster etc..
в nginx.conf
http {
limit_zone one $binary_remote_addr 10m;
...
location /files {
root /home/www/.../files;
internal;
limit_conn one 1;
}
где one-имя зоны, 1-количество подкл. с одного ip
string mime_content_type ( string filename)
не тестировал, но если работает - удобно