上周末在openparty听了taobao @agentzh的 nginx scripting hack的主题演讲,心情万分激动,就像一个原始人发现了一把电锯似的的感觉,正好赶上项目需要一个http cache,就借机实践了一把。
过程中,代码量少的令人发指。
业务描述:根据para中的三个参数构造一个复合key,进行memcached的存(post)取(get)
这段是 get 逻辑
location /cache/get {
echo_exec /cache/get/$arg_from$arg_to$arg_date;
}
location ~ '^/cache/get/(.*)$'{
internal;
set $memc_key $1;
set $memc_cmd get;
# format definition is at below
access_log logs/getmemc.log memc;
memc_pass my_memc_backend;
#404 处理
error_page 404 = @nodata;
}
location @nodata{
echo "NO_DATA";
}
这段是 set 逻辑
location /cache/set {
#大数据提交,若写缓存文件,可能导致form_input无法读取
client_body_buffer_size 20k;
#读取post para
set_form_input $from;
set_form_input $to;
set_form_input $date;
set_form_input $memc_value content;
# 用lua进行拼接key
set_by_lua $memc_key "return ngx.arg[1]..ngx.arg[2]..ngx.arg[3]" $from $to $date;
# format 'memc' definition is at below
access_log logs/setmemc.log memc;
set $memc_cmd set;
set $memc_exptime 0;
memc_pass my_memc_backend;
}
这段应该放在头部,供下面引用
#format for memc about
log_format memc '$remote_addr [$time_local] $memc_key $body_bytes_sent';
但是简单的前提是“站在巨人的肩膀上”,感谢 @agentzh @chaoslawful 在nginx社区的贡献。以下是用到的他们开发的mod
--add-module=/root/agentzh-echo-nginx-module-22f3f7e\
--add-module=/root/agentzh-memc-nginx-module-1128d82\
--add-module=/root/calio-form-input-nginx-module-8f05d08\
--add-module=/root/chaoslawful-lua-nginx-module-0ef14aa\
--add-module=/root/ngx_http_upstream_keepalive-2ce9d8a1ca93\
--add-module=/root/simpl-it-ngx_devel_kit-8d75c70
后感:
nginx可以学一点,高度的可扩展,大有前途。而且有个重点是里面的中文开发者很活跃,比如上面两位。
补充:client_body_buffer_size 20k; POST数据包太大,超过默认buff(8k)时,会写到临时文件,导致 $request_body 读取有问题。
相关ppt
http://agentzh.org/misc/slides/nginx-conf-scripting/
http://agentzh.org/misc/slides/recent-dev-nginx-conf/
分享到:
相关推荐
# ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #}...
使用Nginx做的负载均衡,memcache做高速cache,tomcat7.0.22做web容器环境下的session共享及缓存。 能够做到重启tomcatsession不失效或多个tomcat应用下session共享。 该RAR包包含了配置所需要的全部jar文件。
下载:http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent, libevent的最新版本是libevent-1.4.13-stable。(如果你的...
服务器的大用户量的承载方案一、前言 二、编译安装 三、 安装MySQL、memcache 四、 安装Apache、PHP、eAccelerator、php-memcache 五、 安装Squid 六、后记 一、前言,准备工作当前,LAMP开发模式是WEB开发的首选,...
nginx的安装和配置其实很简单,nginx本身非常轻量级, 直接 sudo apt-get install nginx 就可以了 他的配置文件是在/etc/nginx/里面,网站项目路径是在/var/www里面,安装之后一定要确保nginx的启动账户有对网站目录...
9.3 新浪网开源软件项目——基于Nginx的NCACHE网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 10.3 Nginx视频...
9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 第11章 Nginx...
9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 第11章 Nginx的非...
测试环境: 测试客户机A: HP DL380G4,2个双核CPU,4G Ram,2块10k RPM SAS盘做raid 1,ext3 Nginx所在服务器B:DELL R710,E5620 * 2,32G Ram,6块盘15K RPM SAS盘做raid 1+0,xfs Memcached所在服务器C:DELL ...
13、高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式 内容:讲述一种提供双层缓存抗穿透的HTTP服务缓存解决方案。 14、高性能Web服务器Nginx的配置与部署研究(14)...
重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache...
带有SRCache动态模块 带Memc动态模块 带有PostgreSQL动态模块 带Redis动态模块 带Redis2动态模块 使用Resty DBD Streams to JSON动态模块 带有Echo动态模块 带有前向代理模块 带有Opentracing动态模块和Jaeger插件 ...
第1部分 Nginx服务器 第1章 Nginx的功能 第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 ...第55章 缓存技术――Memcached 第56章 缓存技术――NCACHE 第57章 缓存技术――Varnish
第1部分 Nginx服务器 第1章 Nginx的功能 第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 ...第55章 缓存技术――Memcached 第56章 缓存技术――NCACHE 第57章 缓存技术――Varnish
第1部分 Nginx服务器 第1章 Nginx的功能 第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 ...第55章 缓存技术――Memcached 第56章 缓存技术――NCACHE 第57章 缓存技术――Varnish
WEB服务器使用memcached,但是不知道为什么memcached老是挂掉(基本20分钟~50分钟左右),导致部分网站页面在访问的时候出错;定义日志后,查看日志也未能发现什么;...nginx=`/usr/local/nginx/sbin/nginx -s reload
重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache...
重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache...
memcached.conf要求nginx> = 1.8,带有这些openresty的模块lua-nginx-module(启用luajit,否则会因缺少ffi软件包而失败) set-misc-nginx-module srcache-nginx-模块memc-nginx-module(如果使用memcached) ...
重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache...