Nginx 自动删除设置有效期较长的缓存?

Nginx 自动删除设置有效期较长的缓存?

我设置了一个 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; }
        }

    }

}

答案1

您的问题可以通过修改来解决proxy_cache_pathNginx 配置中的设置。在这里,您可以定义用于保存缓存对象的存储。有一个不活动=时间选项可以修复该问题:

在 inactive 参数指定的时间内未访问的缓存数据将从缓存中删除,无论其新鲜度如何。默认情况下,inactive 设置为 10 分钟。

在您的示例中,我会将最短时间延长至 2 天:

proxy_cache_path /tmp/mycache keys_zone=mycache:10m use_temp_path=off inactive=2d;

相关内容