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

Vasiliy Tolstov v.tolstov на selfip.ru
Пт Янв 27 11:22:52 UTC 2017


Еще интересно, что со сменой контент тайпа, меняются и другие заголовки:
[vtolstov@ ~]$ curl -I
http://st.interneturok.com/video/geografy/8_klass/0004111.270.mp4
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 27 Jan 2017 11:19:27 GMT
Content-Type: video/mp4

Content-Length: 16876286
Connection: keep-alive
Accept-Ranges: bytes
Last-Modified: Tue, 19 Feb 2013 15:17:34 GMT
Etag: e95423b912c5e5c6df42fda06109f49b
X-Timestamp: 1361287053.62919
X-Trans-Id: txaf83198e2eb94a9fa148a-00588b2cbf

[vtolstov@ ~]$ curl -I
http://st.interneturok.com/video/geografy/8_klass/0004111.270.mp4
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 27 Jan 2017 11:21:13 GMT
Content-Type: text/plain
Content-Length: 16876286
Last-Modified: Tue, 19 Feb 2013 15:17:34 GMT
Connection: keep-alive
ETag: "5123978e-10182fe"
Accept-Ranges: bytes


2017-01-27 3:06 GMT+03:00 Vasiliy Tolstov <v.tolstov at selfip.ru>:

> Всем доброй ночи.
>
> Заметил странную вещь, 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:42 [debug] 5034#5034: *307298342 reusable connection: 0
> 2017/01/27 02:59:42 [debug] 5034#5034: *307298342 free: 00007F4FD4C01FD0,
> unused: 2704
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http header: "Host:
> st.interneturok.com"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http header:
> "User-Agent: curl/7.51.0"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http header: "Accept:
> */*"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http header done
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 event timer del: 84:
> 1485475243753
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 generic phase: 0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 rewrite phase: 1
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 posix_memalign:
> 00007F4FDAE14E90:4096 @16
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http script value:
> "CLODO_bef7b28b3d918e432ae6a6e45fc84b06"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http script set $cs_acct
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 test location: "/"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 test location: ~
> "\.(mp4|m4v|m4a)$"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 using configuration
> "\.(mp4|m4v|m4a)$"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http cl:-1 max:5368709120
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 rewrite phase: 3
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 rewrite phase: 4
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http script regex:
> "^(.*)$"
> 2017/01/27 02:59:43 [notice] 5049#5049: *307298554 "^(.*)$" matches
> "/video/geografy/8_klass/0004111.270.mp4", 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 http script copy:
> "/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http script capture:
> "/video/geografy/8_klass/0004111.270.mp4"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http script regex end
> 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 rewrite phase: 5
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 headers more rewrite
> handler, uri "/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b
> 06/public/video/geografy/8_klass/0004111.270.mp4"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 post rewrite phase: 6
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 generic phase: 7
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 generic phase: 8
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 generic phase: 9
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 access phase: 10
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 access phase: 11
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 access phase: 12
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 access phase: 13
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 post access phase: 14
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 try files phase: 15
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http script var:
> "/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public/video/geografy/8_
> klass/0004111.270.mp4"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 trying to use file:
> "/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public/video/geografy/8_klass/0004111.270.mp4"
> "/srv/d1/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b
> 06/public/video/geografy/8_klass/0004111.270.mp4"
> 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_bef7b28b3d918e432ae6a6e45fc84b
> 06/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_bef7b28b3d918e432ae6a6e45fc84b
> 06/public/video/geografy/8_klass/0004111.270.mp4"
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 uploadprogress
> error-tracker error: 0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 xslt filter header
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 HTTP/1.1 200 OK
> Server: nginx
> Date: Thu, 26 Jan 2017 23:59:43 GMT
> Content-Type: text/plain
> Content-Length: 16876286
> Last-Modified: Tue, 19 Feb 2013 15:17:34 GMT
> Connection: keep-alive
> ETag: "5123978e-10182fe"
> Accept-Ranges: bytes
>
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 write new buf t:1 f:0
> 00007F4FDAE15378, pos 00007F4FDAE15378, size: 241 file: 0, size: 0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http write filter: l:1
> f:0 s:241
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http write filter limit 0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 writev: 241 of 241
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http write filter
> 0000000000000000
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http finalize request:
> 0, "/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public/video/geografy/8_klass/0004111.270.mp4?"
> a:1, c:1
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 set http keepalive
> handler
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http close request
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http log handler
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 run cleanup:
> 00007F4FDAE151A0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 file cleanup: fd:87
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 free: 00007F4FDB64E2F0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 free: 00007F4FD1AD83D0,
> unused: 0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 free: 00007F4FDAE14E90,
> unused: 2183
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 hc free:
> 0000000000000000 0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 hc busy:
> 0000000000000000 0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 tcp_nodelay
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 reusable connection: 1
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 event timer add: 84:
> 75000:1485475258753
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 post event
> 00007F4FCE6EC7F0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 delete posted event
> 00007F4FCE6EC7F0
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http keepalive handler
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 recv: fd:84 -1 of 1024
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 recv() not ready (11:
> Resource temporarily unavailable)
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 http keepalive handler
> 2017/01/27 02:59:43 [debug] 5049#5049: *307298554 recv: fd:84 0 of 1024
> 2017/01/27 02:59:43 [info] 5049#5049: *307298554 client 92.255.100.1
> closed keepalive connection
>
>
> При этом файл:
> stat /srv/d1/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b
> 06/public/video/geografy/8_klass/0004111.270.mp4
>   File: ‘/srv/d1/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b
> 06/public/video/geografy/8_klass/0004111.270.mp4’
>   Size: 16876286        Blocks: 33000      IO Block: 4096   regular file
> Device: 6810h/26640d    Inode: 383         Links: 1
> Access: (0600/-rw-------)  Uid: (   33/www-data)   Gid: (   33/www-data)
> Access: 2017-01-27 02:45:18.000000000 +0300
> Modify: 2013-02-19 19:17:34.000000000 +0400
> Change: 2017-01-27 02:45:17.000000000 +0300
>  Birth: -
> file /srv/d1/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b
> 06/public/video/geografy/8_klass/0004111.270.mp4
> /srv/d1/v1/CLODO_bef7b28b3d918e432ae6a6e45fc84b06/public/video/geografy/8_klass/0004111.270.mp4:
> ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
>
> --
> Vasiliy Tolstov,
> e-mail: v.tolstov at selfip.ru
>



-- 
Vasiliy Tolstov,
e-mail: v.tolstov at selfip.ru
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20170127/059d8a71/attachment-0001.html>


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