Re: странное поведение при отдаче файла при использовании proxy_cache

Maxim Dounin mdounin на mdounin.ru
Пт Янв 27 13:10:41 UTC 2017


Hello!

On Fri, Jan 27, 2017 at 03:06:07AM +0300, Vasiliy Tolstov wrote:

> Заметил странную вещь, nginx 1.9.10-1~bpo8+4 (пакет nginx-extras, знаю
> сейчас будут лететь тухлые яйца, что надо пробовать чистый nginx).
> Nginx используется как кеширующий фронтент для swift. При первом запросе
> видео файла он берется с бекенда и отдается с Content-Type: video/mp4, но
> как только он попадает в кеш, периодически он отдается с Content-Type:
> text/plain. При этом его длина верная и на диске файл лежит в нормальном
> виде (как видео).
> 
> Настройки для прокси:
>         proxy_connect_timeout 30s;
>         proxy_cache            d0;
>         proxy_cache_valid      200 201 204 24h;
>         proxy_cache_valid      301 302 304 24h;
>         proxy_cache_valid      404 30m;
>                                               proxy_cache_valid      401
> 403 5m;
>         proxy_cache_valid      any 5m;
>         proxy_cache_key        $uri$is_args$args;
>         proxy_cache_methods    GET;
>         proxy_cache_bypass     $http_x_direct;
>         proxy_no_cache         $http_x_auth_token;
>         proxy_ignore_headers   "Cache-Control" "Expires" "Set-Cookie";
>         proxy_ignore_client_abort on;
>         proxy_pass             http://backend;
> 
> 
> 
> debug log:
> 2017/01/27 02:59:42 [debug] 5034#5034: *307298342 event timer del: 103:
> 1485475257937

[...]

> 2017/01/27 02:59:43 [notice] 5049#5049: *307298554 rewritten data:
> "/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public/video/geografy/8_klass/0004111.270.mp4",
> args: "", client: 92.255.100.1, server: st.interneturok.com, request: "HEAD
> /video/geografy/8_klass/0004111.270.mp4 HTTP/1.1", host: "
> st.interneturok.com"

[...]

> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 try file uri:
> "/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public/video/geografy/8_klass/0004111.270.mp4"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http set discard body
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http mp4 filename:
> "/srv/d1/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public/video/geografy/8_klass/0004111.270.mp4"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 add cleanup:
> 00007F4FDAE151A0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 lua header filter for
> user lua code, uri
> "/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public/video/geografy/8_klass/0004111.270.mp4"

В приведённом логе нет проксирования с кешированием, а есть отдача 
статического файла с помощью mp4-модуля.  И до кучи - множество 
дополнительных действий, включая rewrite'ы, try_files и 
обработку заголовков модулем lua.

Вероятнее всего, происходит у вас ровно то, что написано в 
конфиге, и вы просто запутались в том, что там написано.

-- 
Maxim Dounin
http://nginx.org/


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