前提條件:nginx支持ngx_http_slice_module模塊
配置文件示例:
#location 塊的配置:
location /asd/ {
slice 512k;
proxy_cache cache;
proxy_cache_key $uri$is_args$args$slice_range;
proxy_set_header Range $slice_range;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_valid 200 206 304 301 302 10d;
}
#設置proxy_cache_path
proxy_cache_path /data/nginx_cache/ levels=1:2 keys_zone=cache:100m inactive=300s max_size=5g;
相關參數解釋:
Proxy_cache cache 使用名為cache
的對應緩存配置
proxy_cache_valid 200 206 304 301 302 10d; 對httpcode為200…的緩存10天
proxy_cache_key 定義緩存唯一key,通過唯一key來進行hash存取
proxy_set_header 自定義http header頭,用於發送給后端真實服務器。
proxy_cache_path 緩存文件路徑
levels 設置緩存文件目錄層次;levels=1:2 表示兩級目錄
keys_zone 設置緩存名字和共享內存大小
inactive 在指定時間內沒人訪問則被刪除
max_size 最大緩存空間,如果緩存空間滿,默認覆蓋掉緩存時間最長的資源。
參考文檔:
https://blog.csdn.net/ai2000ai/article/details/80485352
https://blog.csdn.net/guowenyan001/article/details/50836490
報錯解釋:
[alert] mmap(MAP_ANON|MAP_SHARED, 2147483648) failed (12: Cannot allocate memory)
proxy_cache_path沒有設置或設置的內存太大導致,建議改成300m