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";
}
}
}