我的nginx服务器(由VestaCP安装)正在提供缓存内容,即使我告诉它不缓存。
该文件是m3u8文件,由ffmpeg不断创建和更新。
nginx config:
set global optimizer_switch='derived_merge=off';
set optimizer_switch='derived_merge=off';
select @@optimizer_switch;
select @@GLOBAL.optimizer_switch;
cURL命令和输出:
location ~ /stream/(.*)\.m3u8 {
add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
if_modified_since off;
expires off;
etag off;
proxy_no_cache 1;
proxy_cache_bypass 1;
max_ranges 0;
root /;
}
正如您在$ curl https://example.com/stream/klan.m3u8 -k -H "Cache-Control: no-cache" -i
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 28 Apr 2018 18:43:42 GMT
Content-Type: application/vnd.apple.mpegurl
Content-Length: 276
Connection: keep-alive
Keep-Alive: timeout=60
Last-Modified: Saturday, 28-Apr-2018 18:43:42 GMT
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:1049
...
上看到的那样,它在该请求上的第1049个块上。每隔约5秒增加+1。
几秒钟后,同样的请求,但输出是:
#EXT-X-MEDIA-SEQUENCE:1049
我几乎每秒都会发送相同的请求,有时它会从之前的文件返回一个减少的值。
..
#EXT-X-MEDIA-SEQUENCE:1050
..
我已经确认该文件没有问题。 nginx返回一个不同的文件,缓存版本
另外,如果我在PHP中使用#EXT-X-MEDIA-SEQUENCE:1047
,它也会返回最新文件
任何想法如何调试,或解决它?谢谢!
答案 0 :(得分:0)
我显然需要使用open_file_cache off;
。