Проблема с X-Accel-Redirect на nginx с php-fpm

Антон Редозубов aredozubov на gmail.com
Пн Июн 28 13:17:44 MSD 2010


Други, подскажите.
Хочу отдавать файлы с докачкой (ну или в несколько потоков), но при
этом проверять в php а может ли данный конкретный человек скачивать
файл.
Внутри php обрабатываю свои проверки, а потом обрабатываю заголовок
Range. И на основе всего этого выдаю заголовки nginx.
В итоге, через браузер качается, через curl качается. А через wget - нет.

Вот пример запроса через curl:
---request begin--
GET /d/very_long_string HTTP/1.1
Range: bytes=20-50
User-Agent: curl
Host: dl02.redic
Accept: */*

---request end---
Запрос HTTP послан, ожидание ответа...
---response begin---
HTTP/1.1 206 Partial Content
Server: nginx
Date: Mon, 28 Jun 2010 08:09:19 GMT
Content-Type: application/octet-stream
Content-Length: 31
Last-Modified: Thu, 24 Jun 2010 12:53:15 GMT
Connection: keep-alive
Content-Disposition: attachment; filename="244413696"
Content-Range: bytes 20-50/290491986

xxxmatroskaxxx
---response end---
То есть результат ожидаемый.

А вот выдача wget -d
---request begin---
GET /d/very_long_string HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: dl02.redic
Connection: Keep-Alive

---request end---
Запрос HTTP послан, ожидание ответа...
---response begin---
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 28 Jun 2010 08:19:30 GMT
Content-Type: text/html
Connection: close
X-Powered-By: PHP/5.3.1

---response end---

Но если wget'ом докачать (-c) статический файл, то все работает.
---request begin---
GET /1.mpg HTTP/1.0
Range: bytes=6591408-
User-Agent: Wget/1.11.4
Accept: */*
Host: dl02.redic
Connection: Keep-Alive

---request end---
Запрос HTTP послан, ожидание ответа...
---response begin---
HTTP/1.1 206 Partial Content
Server: nginx
Date: Mon, 28 Jun 2010 09:03:32 GMT
Content-Type: video/mpeg
Content-Length: 2563920
Last-Modified: Thu, 24 Jun 2010 09:54:21 GMT
Connection: keep-alive
Content-Range: bytes 6591408-9155327/9155328

---response end---

Вот заголовки, которые выдает php для nginx:
Accept-Ranges: bytes
Content-Range: bytes 20-50/290491986
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="244413696"
Content-Length: 31
X-Accel-Limit-Rate: 1024
X-Accel-Redirect: /store0801-03/244413696

В чем может быть проблема?

-- 
Антон
+7 (495) 7225946
http://redozubov.ru


Подробная информация о списке рассылки nginx-ru