У меня проблема с установкой Varnish, когда я пытаюсь транслировать mp3-файлы через Varnish Cache 4. Это сценарий.
У меня есть веб-сайт Drupal, на котором редакторы могут загружать mp3-файлы.Эти mp3-файлы перечислены в разделе веб-сайта, и конечный пользователь может прослушивать их с помощью проигрывателя HTML 5.Стек: Varnish 4 <-> Nginx 1.11 <-> Drupal 7 на Debian Jessie под GNU / Linux.Varnish и Nginx устанавливаются вместе с пакетами Debian.
Моя конфигурация Varnish находится здесь: https://pastebin.com/8Kw1b2mL
Когда я пытаюсь слушать mp3 напрямую через Nginx, все работает хорошо: плеер загружает файл, и ямогу слушать mp3.Если я попытаюсь сделать то же самое через Varnish, плеер останется загруженным, а mp3 не запустится.Я попытался загрузить mp3-файл, используя curl, и мой запрос уходит в тайм-аут.
Я посмотрел на varnishlog, и вот вывод:
* << Request >> 1409738
- Begin req 1246052 rxreq
- Timestamp Start: 1552587068.541997 0.000000 0.000000
- Timestamp Req: 1552587068.541997 0.000000 0.000000
- ReqStart 93.147.150.135 15330
- ReqMethod GET
- ReqURL /sites/default/files/audio/radio_interviews/20180927-rds-gr_rds_1700-170602593m_1.mp3
- ReqProtocol HTTP/1.1
- ReqHeader Host: www.xxx.it
- ReqHeader Connection: keep-alive
- ReqHeader Pragma: no-cache
- ReqHeader Cache-Control: no-cache
- ReqHeader Accept-Encoding: identity;q=1, *;q=0
- ReqHeader User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
- ReqHeader chrome-proxy: frfr
- ReqHeader Accept: */*
- ReqHeader Referer: http://www.xxx.it/path/to/page/that/hosts/mp3file
- ReqHeader Accept-Language: en-US,en;q=0.9,es;q=0.8,fr;q=0.7,it;q=0.6
- ReqHeader Cookie: SESScookieagreed=2; has_js=1; _ga=GA1.2.950111086.1552579260; _gid=GA1.2.112403313.1552579260; __atuvc=2%7C11; _gat_UA-57096474-1=1
- ReqHeader Range: bytes=0-
- ReqHeader X-Forwarded-For: 93.147.150.135
- VCL_call RECV
- VCL_acl NO_MATCH allowed_monitors
- ReqUnset X-Forwarded-For: 93.147.150.135
- ReqHeader X-Forwarded-For: 93.147.150.135, 93.147.150.135
- ReqURL /sites/default/files/audio/mp3s/file.mp3
- ReqHeader x-range: bytes=0-
- ReqUnset Cookie: SESScookieagreed=2; has_js=1; _ga=GA1.2.950111086.1552579260; _gid=GA1.2.112403313.1552579260; __atuvc=2%7C11; _gat_UA-57096474-1=1
- VCL_return hash
- ReqUnset Accept-Encoding: identity;q=1, *;q=0
- VCL_call HASH
- ReqUnset Range: bytes=0-
- VCL_return lookup
- Hit 229378
- VCL_call HIT
- VCL_return fetch
- VCL_Error change return(fetch) to return(miss) in vcl_hit{}
- VCL_call MISS
- VCL_return fetch
- Link bereq 1409739 fetch
- Timestamp Fetch: 1552587068.542520 0.000523 0.000523
- RespProtocol HTTP/1.1
- RespStatus 200
- RespReason OK
- RespHeader Server: nginx/1.11.5
- RespHeader Date: Thu, 14 Mar 2019 18:11:08 GMT
- RespHeader Last-Modified: Fri, 28 Sep 2018 08:26:56 GMT
- RespHeader ETag: "5bade5d0-a0b94"
- RespHeader Content-Type: audio/mpeg
- RespHeader Content-Length: 658324
- RespHeader X-Cacheable: YES
- RespHeader X-Varnish: 1409738
- RespHeader Age: 0
- RespHeader Via: 1.1 varnish-v4
- VCL_call DELIVER
- RespHeader X-Cache: MISS
- RespHeader X-Cookie:
- RespHeader grace:
- RespHeader X-Varnish-Server: www.xxx.it
- VCL_return deliver
- Timestamp Process: 1552587068.542536 0.000539 0.000016
- RespHeader Accept-Ranges: bytes
- Debug "RES_MODE 2"
- RespHeader Connection: keep-alive
- Debug "Hit idle send timeout, wrote = 247608/658701; retrying"
- Debug "Write error, retval = -1, len = 411093, errno = Resource temporarily unavailable"
- Timestamp Resp: 1552587188.539239 119.997242 119.996703
- ReqAcct 733 0 733 377 658324 658701
- End
Я не лакгуру », но кажется, что ошибка:
- Debug "Hit idle send timeout, wrote = 247608/658701; retrying"
- Debug "Write error, retval = -1, len = 411093, errno = Resource temporarily unavailable"
Я много искал в Google, но ничего не нашел об этом, за исключением проблемы с тайм-аутом, которая мне не кажется из-за тайм-аутанастройки установлены на 60 с (first_byte), так же, как Nginx.
Любая помощь действительно приветствуется.Если вам нужна другая информация, дайте мне знать.
Заранее спасибо Daniele