nginx缓存功能cache的教程(2)
来源:asp之家 发布时间:2009-09-23 20:00:00
2、传统缓存之二(!-e)
原理和404跳转基本一致,但更简洁一些:
location / {
root /home/html/;
proxy_store on;
proxy_set_header Accept-Encoding '';
proxy_temp_path /home/tmp;
if ( !-f $request_filename )
{
proxy_pass http://www.sudone.com/;
}
}
可以看到这个配置比404节约了不少代码,它是用!-f来判断请求的文件在文件系统上存不存在,不存在就proxy_pass到后端,返回同样是用proxy_store保存。
两种传统缓存都有着基本一样的优点和缺点:
缺点1:不支持带参数的动态链接,比如read.php?id=1,因为nginx只保存文件名,所以这个链接只在文件系统下保存为read.php,这样用户访问read.php?id=2时会返回不正确的结果。同时不支持http://www.sudone.com/这种形式的首页和二级目录http://www.sudone.com/download/,因为nginx非常老实,会将这样的请求照链接写入文件系统,而这个链接显然是一个目录,所以保存失败。这些情况都需要写rewrite才能正确保存。
缺点2:nginx内部没有缓存过期和清理的任何机制,这些缓存的文件会永久性地保存在机器上,如果要缓存的东西非常多,那就会撑暴整个硬盘空间。为此可以使用一个shell脚本定期清理,同时可以撰写php等动态程序来做实时更新。
缺点3:只能缓存200状态码,因此后端返回301/302/404等状态码都不会缓存,假如恰好有一个访问量很大的伪静态链接被删除,那就会不停穿透导致后端承载不小压力。
缺点4:nginx不会自动选择内存或硬盘作为存储介质,一切由配置决定,当然在当前的操作系统里都会有操作系统级的文件缓存机制,所以存在硬盘上也不需要过分担心大并发读取造成的io性能问题。
nginx传统缓存的缺点也是它和squid等缓存软件的不同之特色,所以也可看作其优点。在生产应用中它常常用作和squid的搭档,squid对于带?的链接往往无法阻挡,而nginx能将其访问拦住,例如:http://sudone.com/?和http://sudone.com/在squid上会被当做两个链接,所以会造成两次穿透;而nginx只会保存一次,无论链接变成http://sudone.com/?1还是http://sudone.com/?123,均不能透过nginx缓存,从而有效地保护了后端主机。
nginx会非常老实地将链接形式保存到文件系统中,这样对于一个链接,可以很方便地查阅它在缓存机器上的缓存状态和内容,也可以很方便地和别的文件管理器如rsync等配合使用,它完完全全就是一个文件系统结构。
这两种传统缓存都可以在linux下将文件保存到/dev/shm里,一般我也是这么做的,这样可以利用系统内存来做缓存,利用内存的话,清理过期内容速度就会快得多。使用/dev/shm/时除了要把tmp目录也指向到/dev/shm这个分区外,如果有大量小文件和目录,还要修改一下这个内存分区的inode数量和最大容量:
mount -o size=2500M -o nr_inodes=480000 -o noatime,nodiratime -o remount /dev/shm
上面的命令在一台有3G内存的机器上使用,因为/dev/shm默认最大内存是系统内存的一半就是1500M,这条命令将其调大成2500M,同时shm系统inode数量默认情况下可能是不够用的,但有趣的是它可以随意调节,这里调节为480000保守了点,但也基本够用了。


猜你喜欢
- 随着Iphone在国内大行其道,越来越多的开发者涌入iOS开发大军 中,但都苦于没有苹果机,本文即将介绍WIN虚拟MAC的教程。一、工具:
- 前言上周电脑重装,换了ubuntu 16.04,想起来之前上课老师也是ubuntu而且他还提到他桌面是他自己写的个小脚本实现的自动更换桌面壁
- Linux免密码远程登录的实例如何通过一台Linux ssh远程其他linux服务器时,不要输入密码,可以自动登入。提高远程效率,不用记忆各
- 一、数据去重日常工作中,使用Hive或者Impala查询导出来可能会存在数据重复的现象,但又不想重新执行一遍查询(查询时间稍长,导出文件内容
- 在切入正题之前给大家讲一个故事,估计有很多人人听过:从前有一个人很笨,想学习功夫,但是很多师傅都不收。最后一个师傅被他搞得不耐烦了。就把他叫
- 一、安装前的准备工作1.首先需要安装VMware,请大家自行百度查找,我会在后续的文章中加入虚拟机的安装方法。以下文章中的内容中所使用的VM
- 看到这样的广告太多了, 看到那些上完此类课程的人后写的感慨也不少, 相信各位也看了不少, 大家有什么感觉?我的一个感觉就是, 结果都差不多。
- 一、准备工作1. 下载并安装centos7.2,配置好网络环境,确保centos能上网,可以获取到yum源。centos7.2的下载地址:h
- 网络协议在电影服务器中占有很重要的地位,可以说如果没有网络协议,电影服务器就根本无法正常发挥作用。本文简要介绍几种目前主流的网络协议,希望能
- 谈到网络安全,你可能熟悉网页欺诈的危险,但是知道域欺骗(pharming)威胁吗?对于一家在线公司来说,这种风险是致命的!简单来说,域欺骗就
- IIS6.0由于运行机制的不同,出现了应用程序池的概念。一般建议10个左右的站点共用一个应用程序池,应用程序池对于一般站点可以采用默认设置,
- AMH,这是一个由国人开发的LNMP/Nginx 虚拟主机面板,看到部落一直在测试各种VPS控制面板,有不少的朋友给我留言说可以测试和分享一
- 现在国内的爱国者黑客,新世纪网安,黑客动画吧。已经有着不可动摇的地位了。我们如何在这些众多的黑客门户网站中找到自己的立足之地了。首先我们要考
- ProFTPD是针对Wu-FTP的弱项而开发的,除了改进的安全性,还具备许多Wu-FTP没有的特点,能以Stand-alone、xinetd
- 北京时间11月21日消息,据国外媒体报道,谷歌联合创始人塞吉·布林(Sergey Brin)表示,谷歌的两大操作系统A
- 作为Comsenz旗下的社区产品SupeSite 7.0 全面支持对 Discuz!、UCenter Home 的聚合功能。对于那些已经安装
- 本文在这基础上分析nginx服务器收到http请求行、请求头部后,http框架是
- 搜索引擎流量占据网站流量很大一部份,为此,我们邀请了SEO知名人士“王通”给大家讲了一些SEO的基础知识.以下为王通老师今天下午培训全部记录
- ubuntu安装pycharm的方法如下所示:1. 下载http://www.jetbrains.com/pycharm/download/
- 做不成也没关系,可以伪装一下。RSS图标不显示订阅数。托管RSS。更新频率等于或低于每日一篇,但不低于每周一篇。凡文内链接全部为站内链接,是