ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Проблемы с nginx в режиме pr oxy_pass с amazon и chrome/chromium



On Tue, Dec 13, 2011 at 10:22:16AM +0400, Sergey Budnevitch wrote:
> 
> On 13.12.2011, at 9:57, Konstantin Pavlov wrote:
> 
> > On Mon, Dec 12, 2011 at 10:31:46PM +0400, Алексей Сундуков wrote:
> >> "Не так" тут видимо google chrome. Не раз сталкивался с тем, что у
> >> него виденее того что и как нужно кэшировать и то, что работает как
> >> задумано в других браузерах не работает в хроме, причем даже
> >> принудительная зачистка кэша не спасает.
> >> 
> >> Видится мне, что если проблема проявляется только в хроне и ни каких
> >> других браузерах, то дело в хроме, а не nginx.
> > 
> > Безусловно.
> > 
> > Это однако не отменяет наличия проблемы и необходимости её решить.
> 
> 
> В хроме с помощью developers tools -> network посмотрите получает ли он этот
> mp3-файл вообще, какого размера, сравните с тем, что должно быть.
Когда ошибка проявляется, chrome делает 4 запроса, ниже следует copy&paste из 
developer tools/network:

1-ый запрос:

GET 
http://yo-fm-mp3.yo.fm/fa04ec7c59e6bdf27e04f0a3db9bdf92?t=39532&p=2056&po=337002
 HTTP/1.1

1-ый ответ:

HTTP/1.1 0 undefined

2-ой запрос:

GET 
http://yo-fm-mp3.yo.fm/fa04ec7c59e6bdf27e04f0a3db9bdf92?t=39532&p=2056&po=337002
 HTTP/1.1
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) 
Chrome/15.0.874.5 Safari/535.2
Referer: http://yo.fm/
Range: bytes=0-

2-ой ответ:

HTTP/1.1 0 undefined

3-ий запрос:

GET /fa04ec7c59e6bdf27e04f0a3db9bdf92?t=39532&p=2056&po=337002 HTTP/1.1
Host: yo-fm-mp3.yo.fm
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) 
Chrome/15.0.874.5 Safari/535.2
Accept: */*
Referer: http://yo.fm/
Accept-Language: ru-RU,en;q=0.8,en-US;q=0.6,ru;q=0.4
Accept-Charset: UTF-8,*;q=0.5
Cookie: __utma=223490707.1901084029.1319019904.1323693066.1323757632.12; 
__utmb=223490707.3.10.1323757632; __utmc=223490707; 
__utmz=223490707.1319019904.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

3-ий ответ:

HTTP/1.1 200 OK
Server: nginx/0.8.55
Date: Tue, 13 Dec 2011 06:44:47 GMT
Content-Type: audio/mpeg
Connection: close
Accept-Ranges: bytes
Content-Length: 21165453
Expires: Tue, 20 Dec 2011 06:44:47 GMT
Cache-Control: max-age=604800

4-ый запрос:

GET 
http://yo-fm-mp3.yo.fm/fa04ec7c59e6bdf27e04f0a3db9bdf92?t=39532&p=2056&po=337002
 HTTP/1.1
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) 
Chrome/15.0.874.5 Safari/535.2
Referer: http://yo.fm/
Range: bytes=21165325-

4-ый ответ:

HTTP/1.1 0 undefined



При этом на первый запрос status в developer tools - "(pending)", на остальные 
"(canceled)". При третьем запросе скачалось при этом ~34 KB из 21165453 байт. 
(Content-length в третьем ответе правильный).


Далее случай когда mp3-шка скачивается нормально:

1-ый запрос:

GET 
http://yo-fm-mp3.yo.fm/dcc27468ccd029c31943ad16da657c9e?t=37460&p=2056&po=337002
 HTTP/1.1

1-ый ответ:

HTTP/1.1 0 undefined

2-ой запрос:

GET 
http://yo-fm-mp3.yo.fm/dcc27468ccd029c31943ad16da657c9e?t=37460&p=2056&po=337002
 HTTP/1.1
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) 
Chrome/15.0.874.5 Safari/535.2
Referer: http://yo.fm/
Range: bytes=0-

2-ой ответ:

HTTP/1.1 0 undefined

3-ий запрос:

GET /dcc27468ccd029c31943ad16da657c9e?t=37460&p=2056&po=337002 HTTP/1.1
Host: yo-fm-mp3.yo.fm
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) 
Chrome/15.0.874.5 Safari/535.2
Accept: */*
Referer: http://yo.fm/
Accept-Language: ru-RU,en;q=0.8,en-US;q=0.6,ru;q=0.4
Accept-Charset: UTF-8,*;q=0.5
Cookie: __utma=223490707.1901084029.1319019904.1323693066.1323757632.12; 
__utmc=223490707; 
__utmz=223490707.1319019904.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)


3-ий ответ:

HTTP/1.1 200 OK
Server: nginx/0.8.55
Date: Tue, 13 Dec 2011 07:03:18 GMT
Content-Type: audio/mpeg
Connection: close
Accept-Ranges: bytes
Content-Length: 5950780
Expires: Tue, 20 Dec 2011 07:03:18 GMT
Cache-Control: max-age=604800

4-го запроса не следует.

Видно, что в 4-м запросе chromium запрашивает последние 128 байт mp3-файла,
видимо хочет прочитать мета-данные.

Я проверил, что chromium всегда корректно скачивает файлы, в которых есть
ID3v1-тэг, но не всегда корректно скачивает те, где этого тэга нет. Однако при
запросе напрямую с amazon S3 файлы всегда воспроизводятся корректно.

> aws content-length отдает?

Отдаёт.

> Если раздавать эти же файлы напрямую nginx'ом проблема воспроизводится?

Нет. Также проблема не воспроизводится, если запросы делать напрямую на amazon 
s3.

-- 
Konstantin Pavlov
VideoLAN team

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.