Nginx

Nginx自動刪除設置為有效期更長的記憶體?

  • September 18, 2017

我設置了一個 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; }
       }

   }

}

您可以通過修改 Nginx 配置中的proxy_cache_path設置來解決您的問題。在這裡你定義你的儲存來保存你的記憶體對象。有一個inactive=time選項可以解決這個問題:

在 inactive 參數指定的時間內未訪問的記憶體數據將從記憶體中刪除,無論其新鮮度如何。預設情況下,非活動設置為 10 分鐘。

在您的範例中,我會將最短時間延長至 2 天:

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

引用自:https://serverfault.com/questions/874056