Nginx 自动删除设置有效期更长的缓存?
Nginx automatically deletes cache which is set to be valid longer?
我设置了一个 Nginx 反向代理服务器,为另一台服务器上托管的 mp4 文件提供服务。除了缓存,现在一切正常。虽然我将 proxy_cache_valid
设置为 1 天 (proxy_cache_valid any 1d
),缓存会在短时间后自动删除(我认为是 5-10 分钟)。我的文件大小在 200 - 1500MB 之间(平均 700MB)。
我无法弄清楚配置有什么问题。任何事情都可能有所帮助。
配置如下
worker_processes auto;
worker_rlimit_nofile 100000;
events {
worker_connections 5000;
multi_accept on;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10;
keepalive_requests 1024;
client_body_timeout 12;
client_header_timeout 12;
send_timeout 10;
proxy_cache_path /tmp/mycache keys_zone=mycache:10m use_temp_path=off;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
listen 80;
server_name localhost;
access_log off;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors on;
client_body_buffer_size 16K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
location / {
proxy_cache mycache;
proxy_max_temp_file_size 1924m;
slice 100m;
proxy_cache_key $host$uri$slice_range;
proxy_set_header Range $slice_range;
proxy_http_version 1.1;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
proxy_cache_valid any 1d;
limit_conn addr 5;
proxy_pass http://domain2.com/;
secure_link $arg_md5,$arg_expires;
secure_link_md5 "secret$secure_link_expires$uri";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
}
}
}
找到答案:原来proxy_cache_valid
不是决定缓存过期时间的指令。在 proxy_cache_path
中,我添加了 inactive=3h
,现在一切正常。
我设置了一个 Nginx 反向代理服务器,为另一台服务器上托管的 mp4 文件提供服务。除了缓存,现在一切正常。虽然我将 proxy_cache_valid
设置为 1 天 (proxy_cache_valid any 1d
),缓存会在短时间后自动删除(我认为是 5-10 分钟)。我的文件大小在 200 - 1500MB 之间(平均 700MB)。
我无法弄清楚配置有什么问题。任何事情都可能有所帮助。
配置如下
worker_processes auto;
worker_rlimit_nofile 100000;
events {
worker_connections 5000;
multi_accept on;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10;
keepalive_requests 1024;
client_body_timeout 12;
client_header_timeout 12;
send_timeout 10;
proxy_cache_path /tmp/mycache keys_zone=mycache:10m use_temp_path=off;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
listen 80;
server_name localhost;
access_log off;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors on;
client_body_buffer_size 16K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
location / {
proxy_cache mycache;
proxy_max_temp_file_size 1924m;
slice 100m;
proxy_cache_key $host$uri$slice_range;
proxy_set_header Range $slice_range;
proxy_http_version 1.1;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
proxy_cache_valid any 1d;
limit_conn addr 5;
proxy_pass http://domain2.com/;
secure_link $arg_md5,$arg_expires;
secure_link_md5 "secret$secure_link_expires$uri";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
}
}
}
找到答案:原来proxy_cache_valid
不是决定缓存过期时间的指令。在 proxy_cache_path
中,我添加了 inactive=3h
,现在一切正常。