http{
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_temp_path /home/temp_dir;
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:50m inactive=20m max_size=30g;
}
location /gou/detail-id-116 {
##缓存
index index.html index.htm index.php;
#被请求3次以上时才缓存
proxy_cache_min_uses 3;
#使用名称为cache_one的缓存 如上面配置的proxy_cache_path keys_zone=cache_one
proxy_cache cache_one;
#缓存有效期 proxy_cache_valid any 1d; 任何 有效期1天
proxy_cache_valid 200 302 1h;
proxy_cache_key $host$uri$is_args$args;
proxy_pass http://...;
#不处理后端服务器返回的指定响应头,作用就是能够缓存动态页面,比如.php的页面,如果不加这一行就只能缓存静态的页面内容了
proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
#-1 表示不缓存
expires 30d;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#如果任何一个参数值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发
#proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
#proxy_cache_methods GET HEAD POST;
}
========================================================
proxy_cache_path有两个必填参数,第一个参数为 缓存目录,第二个参数keys_zone指定缓存名称和占用内存空间的大小(注:示例中的10m是对内存中缓存内容元数据信息大小的限制,如果想限制缓存总量大小,需要用 max_size 参数)
如:
// 缓存目录:/data/nginx/cache
// 缓存名称:one
// 缓存占用内存空间:10m
// 加载器每次迭代过程最多执行300毫秒
// 加载器每次迭代过程中最多加载200个文件
// 缓存硬盘空间最多为 200m
proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300
loader_files=200 max_size=200m;
========================================================
1) nginx先把请求地址/1.png用md5进行哈希,得到e0bd86606797639426a92306b1b98ad9
md5的参数就是上面的配置中:
proxy_cache_key
值,如md5("www.xxx.com/gou/detail-id-116");
2) level=1:2就是把最后一位数9拿出来建一个目录,然后再把9前面的2位建一个目录,最后把刚才得到的这个缓存文件放到9/ad目录中。
同样的方法推理,如果level=1:1,那么缓存文件的路径就是/usr/local/nginx/cache/9/d/e0bd86606797639426a92306b1b98ad9
========================================================
memcached
memcached connect_timeout:在NGINX和memcached服务器之间建立连接的超时。
memcached_send_timeout:将请求写入memcached服务器的超时。 memcached_read_timeout:从memcached服务器读取响应的超时。
========================================================
http{
memcached_send_timeout 30s;
memcached_connect_timeout 30s;
memcached_read_timeout 30s;
server{
location /python/ {
set memcachedkey"memcachedkey"request_method$request_uri";
charset utf-8;
memcached_pass 127.0.0.1:11211;
#error_page 404 502 504 = @pythonfallback;
default_type text/html;
}
location @pythonfallback {
rewrite ^/python/(.*) /$1 break;
proxy_pass http://127.0.0.1:5000;
proxy_set_header X-Cache-Key "requestmethodrequestmethodrequest_uri";
}
}
}
nginx:缓存
猜你喜欢
转载自samson870830.iteye.com/blog/2385127
今日推荐
周排行