nginx:缓存

http{

proxy_connect_timeout5;

proxy_read_timeout60;

proxy_send_timeout5;

proxy_buffer_size16k;

proxy_buffers464k;

proxy_busy_buffers_size128k;

proxy_temp_file_write_size128k;

proxy_temp_path/home/temp_dir;

proxy_cache_path/home/cachelevels=1:2keys_zone=cache_one:50minactive=20mmax_size=30g;

}

location/gou/detail-id-116{

##缓存

indexindex.htmlindex.htmindex.php;

#被请求3次以上时才缓存

proxy_cache_min_uses3;

#使用名称为cache_one的缓存如上面配置的proxy_cache_pathkeys_zone=cache_one

proxy_cachecache_one;

#缓存有效期proxy_cache_validany1d;任何有效期1天

proxy_cache_valid2003021h;

proxy_cache_key$host$uri$is_args$args;

proxy_passhttp://...;

#不处理后端服务器返回的指定响应头,作用就是能够缓存动态页面,比如.php的页面,如果不加这一行就只能缓存静态的页面内容了

proxy_ignore_headers"Cache-Control""Expires""Set-Cookie";

#-1表示不缓存

expires30d;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

#如果任何一个参数值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发

#proxy_cache_bypass$cookie_nocache$arg_nocache$arg_comment;

#proxy_cache_methodsGETHEADPOST;

}

========================================================

proxy_cache_path有两个必填参数,第一个参数为缓存目录,第二个参数keys_zone指定缓存名称和占用内存空间的大小(注:示例中的10m是对内存中缓存内容元数据信息大小的限制,如果想限制缓存总量大小,需要用max_size参数)

如:

//缓存目录:/data/nginx/cache

//缓存名称:one

//缓存占用内存空间:10m

//加载器每次迭代过程最多执行300毫秒

//加载器每次迭代过程中最多加载200个文件

//缓存硬盘空间最多为200m

proxy_cache_path/data/nginx/cachekeys_zone=one:10mloader_threshold=300

loader_files=200max_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

memcachedconnect_timeout:在NGINX和memcached服务器之间建立连接的超时。

memcached_send_timeout:将请求写入memcached服务器的超时。memcached_read_timeout:从memcached服务器读取响应的超时。

========================================================

http{

memcached_send_timeout30s;

memcached_connect_timeout30s;

memcached_read_timeout30s;

server{

location/python/{

setmemcachedkey"memcachedkey"request_method$request_uri";

charsetutf-8;

memcached_pass127.0.0.1:11211;

#error_page404502504=@pythonfallback;

default_typetext/html;

}

location@pythonfallback{

rewrite^/python/(.*)/$1break;

proxy_passhttp://127.0.0.1:5000;

proxy_set_headerX-Cache-Key"requestmethodrequestmethodrequest_uri";

}

}

}

相关推荐