ngx_http_proxy_module插件。
官方文档:http://nginx.org/en/docs/http/ngx_http_proxy_module.html
关键配置
proxy_temp_path /data/nginx_cache/proxy_cache/proxy_temp_dir;
proxy_cache_path /data/nginx_cache/proxy_cache/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=10g;
server {
listen 80;
server_name example.resource.com;
location ~ (.+),(\d+),(\d+)\.(jpg|gif|png)$ {
proxy_pass http://localhost:8000;
proxy_cache cache_one; #使用命名为cache_one的缓存
proxy_cache_valid 200 302 30m; #200 302状态的过期时间
proxy_cache_valid 404 1m; #404状态的过期时间
proxy_cache_valid any 10m; #其他状态的过期时间
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
}
}
配置解析:
proxy_cache_path /data/nginx_cache/proxy_cache/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=10g;
声明一个命名为cache_one的cache,cache路径为/data/nginx_cache/proxy_cache/proxy_cache_dir;levels=1:2代表缓存文件存放时使用二级目录;200m 代表内存最大使用200M;max_size=10g代表硬盘最大使用10g;inactive=1d代表缓存过期时间为1天。
levels设置目录层次
keys_zone设置缓存名字和共享内存大小
inactive在指定时间内没人访问则被删除在这里是1天
max_size硬盘最大缓存空间
注意一点proxy_cache_path和proxy_temp_path设置的目录需要在同一分区,因为它们之间是硬链接的关系