本文来自:CSDN博客专栏《Nginx高性能Web服务器》及Poechant技术博客,转载请注明出处。
通过《高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景》一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率是相当高的。那么:
(转载请注明来自Poechant的CSDN博客:http://blog.csdn.net/poechant/article/details/7179891)
1. 如果不命中呢?
我们可以到相应的数据服务器上读取数据,然后将它缓存到Nginx服务器上,然后再将该数据返回给客户端。这样,对于该资源,只有穿透Memcached的第一次请求是需要到数据服务器读取的,之后在缓存过期时间之内的所有请求,都是读取Nginx本地的。不过Nginx的proxy_cache是本地硬盘缓存,效率要远低于Memcached。
2. 应该如何安装和配置呢?
(1)HttpMemcModule模块
如果使用Nginx的非核心模块——HttpMemcModule模块,则可以下载模块:
http://github.com/agentzh/memc-nginx-module/tags
目前
验证发现Nginx 1.0.10版本Nginx的1.1.3及其之前的版本,需要额外通过--add-module来加载upstream-keepalive模块,请自行google之。
其他版本还不确定,猜测是在1.1 从nginx的1.1.4及其之后的版本开始,自动携带upstream-keeplive模块的。 (感谢agentzh的提示)
(转载请注明来自Poechant的CSDN博客:http://blog.csdn.net/poechant/article/details/7179891)
然后我们来编辑配置文件吧。如下:
从上面的配置文件我们可以看出,一个请求到达后,会其uri作为key去Memcached服务器127.0.0.1:11211上查找value,如果没有命中,则返回404。这时通过error_page将404接收转到@fallback,然后去data_server中取文件,取完后将该文件在本地磁盘缓存,同时用户的浏览器也通过expires设置缓存时间。
这样绝大多数请求如果被第一层Memcached的内存缓存拦截的话,剩余的请求可以通过访问第二层Nginx服务器的硬盘缓存文件,来减少穿透。
按照上面的方式,客户端得到的请求响应中虽然包含了正确的文件内容,但状态码都是404(可以通过Fiddler来观察)。这似乎会引起问题。什么问题呢?绝大多数浏览器,即使在404的情况下,也会尝试去读取内容,如果有正确的内容,是可以正确显示的。但是比较常见的可能引起问题的两种情况是:
(a)、搜索引擎的spider爬到的404时,一般不会收录该URL,我想这不是你所希望看到的;
(b)、Flash等方式加载时,如果头是404,可能不予显示,我想着也不是你所希望看到的。
(转载请注明来自Poechant的CSDN博客:http://blog.csdn.net/poechant/article/details/7179891)
那我们把它改成都是200,是不是很好呢?
非也,这样404传递到fallback处理请求后的状态如果不是200,就很不一致了,会引起更多问题。所以应该如下配置:
这样fallback的处理结果状态是什么,就用什么替换404。
(2)Nginx内部的Memcached模块
如果你想使用Nginx内部的Memcached模块,配置文件可以结合参考上面的示例和《高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景》
(转载请注明来自Poechant的CSDN博客:http://blog.csdn.net/poechant/article/details/7179891)
本文来自:CSDN博客专栏《Nginx高性能Web服务器》及Poechant技术博客,转载请注明出处。
-
分享到:
相关推荐
13、高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式 内容:讲述一种提供双层缓存抗穿透的HTTP服务缓存解决方案。 14、高性能Web服务器Nginx的配置与部署研究(14)...
ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_cache_purge on|off|<method> [from all|<ip> [.....
高性能Web服务器Nginx及相关新技术的应用实践 高性能Web服务器Nginx及相关新技术的应用实践 高性能Web服务器Nginx及相关新技术的应用实践 高性能Web服务器Nginx及相关新技术的应用实践 高性能Web服务器Nginx及相关新...
本篇文章主要介绍了Nginx启用proxy_cache缓存的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
nginx+tomcat+memcached_SH nginx+tomcat+memcached_SH nginx+tomcat+memcached_SH nginx+tomcat+memcached_SH
高性能Web服务器Nginx及相关新技术的应用实践,csdn大会上的PPT,内容通俗易懂,是入门的比较好的学习材料!
《决战Nginx技术卷:高性能Web服务器部署与运维(基于php、Java、ASP.NET等)》详细讲述了Nginx服务器与动态语言应用的结合,动态语言包括PHP、Python、Perl、Java、Ruby及ASP.NET架构。对于PHP部分,我们使用了...
取代Apache的高性能Web服务器 电子工业出版社 319页 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 1.4 Nginx与Apache、Lighttpd的综合对比 第2章 Nginx服务器...
第1部分 Nginx服务器 第1章 Nginx的功能 ...第53章 缓存技术――proxy_cache 第54章 缓存技术――proxy_store 第55章 缓存技术――Memcached 第56章 缓存技术――NCACHE 第57章 缓存技术――Varnish
《决战Nginx系统卷:高性能Web服务器详解与运维》第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于...
第1部分 Nginx服务器 第1章 Nginx的功能 ...第53章 缓存技术――proxy_cache 第54章 缓存技术――proxy_store 第55章 缓存技术――Memcached 第56章 缓存技术――NCACHE 第57章 缓存技术――Varnish
本书第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,在不多却足够使用的模块下...
所以在这里用到了nginx的proxy_redirect指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值 以下是截取nginx的一小段配置文档 server { listen 80; server_name www.boke.com; l
, 《Nginx高性能Web服务器详解》特别适合于希望了解和掌握Nginx服务器应用技术和实现技术的广大教师、学生和电脑爱好者阅读,对使用Nginx服务器搭建Web服务器架构或进行网络服务器应用开发的技术人员尤其具有重要的...
张宴《实战Nginx:取代Apache的高性能Web服务器》pdf电子版下载,此资料网友共享,请购买作者正版书籍. 目录介绍: 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 ...
Nginx高性能Web服务器实战教程+高清+完整书签,
nginx: [emerg] “proxy_cache_path” directive is not allowed here in /etc/nginx/conf.d/default.conf:29 提示意思“proxy_cache_path指令不被允许”,在官网上查找了相关说明,也没有发现问题,最后看应用范围...