David Tran
David Tran

Reputation: 63

Nginx automatically deletes cache which is set to be valid longer?

I set up a Nginx reverse proxy server serving mp4 files hosted on another server. Everything is working fine now except the cache. Although I have proxy_cache_valid set to 1 day (proxy_cache_valid any 1d), the cache will be automatically deleted after a short amount of time (5-10 mins I think). My file sizes range from 200 - 1500MB (700MB in average).

I couldn't figure out what's wrong with the configurations. Anything might help.

Here are the configurations

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; }
        }

    }

}

Upvotes: 1

Views: 766

Answers (1)

David Tran
David Tran

Reputation: 63

I found an answer: It turned out that proxy_cache_valid is not the directive to decide the expiration time of cache. In proxy_cache_path I added inactive=3h, everything working fine now.

Upvotes: 1

Related Questions