1. proxy_store方式
location / {
root /home/html/;
###启用proxy_store,指定nginx将代理返回的文件保存
proxy_store on;
###让后端不要返回压缩(gzip或deflate)的内容,保存压缩后的内容会引发乱子。
proxy_set_header Accept-Encoding '';
###临时目录,这个目录要和/home/html在同一个硬盘分区内
proxy_temp_path /home/tmp;
if ( !-f $request_filename )
{
proxy_pass http://www.eduyo.com/;
}
}
原理就是找不到文件时通过proxy_pass指定的源服务区地址抓取文件保存到本地,proxy_store完全是在本地服务器保存了一个跟源服务器一模一样的目录结构,真的很强大,但缺点就是无法限制空间大小,如果本地服务器空间比源服务器小,很容易就把硬盘空间撑爆了,所以需要定时清理一些文件以保证服务器空间。
2.基于memcached的缓存
nginx对memcached有所支持,但是功能并不是特别之强,性能上还是非常之优秀。
location /mem/ {
if ( $uri ~ "^/mem/([0-9A-Za-z_]*)$" )
{
set $memcached_key "$1";
memcached_pass 192.168.1.2:11211;
}
expires 70;
}
这个配置会将http://eduyo.com/mem/abc指明到memcached的abc这个key去取数据。
nginx目前没有写入memcached的任何机制,所以要往memcached里写入数据得用后台的动态语言完成,可以利用404定向到后端去写入数据。
3、基于第三方插件ncache
ncache是新浪开发的一个不错的项目,它利用nginx和memcached实现了一部分类似squid缓存的功能,关于这个插件的使用可以参考:
http://code.google.com/p/ncache/ 站长教学网 eduyo.com
但NCache is now in nginx core , you can use it as nginx proxy cache
NCache is out of maintaince from 2009.1.1 (NCache已经停止更新很久了,但已经集中到nginx内核了,应该就是nginx0.7.44版本新加入的proxy_cache功能了,见下一个cache方式)
4、nginx新开发的proxy_cache功能
从nginx-0.7.44版开始,nginx支持了类似squid较为正规的cache功能,目前还处于开发阶段,支持相当有限,这个缓存是把链接用md5编码hash后保存,所以它可以支持任意链接,同时也支持404/301/302这样的非200状态。
(责任编辑:ken)