上周末在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-cache-proxy`)或自定义脚本实现Nginx与Memcached之间的交互,根据策略决定是否从Memcached读取数据,或者将响应写入缓存。 5. **测试与监控:** - 通过发送HTTP请求验证Nginx是否...
### 集群Nginx+Tomcat+Memcached #### 一、Nginx介绍与特性 **Nginx** 是一款广泛使用的高性能HTTP服务器和反向代理服务器,最初由俄罗斯开发者Igor Sysoev编写,旨在为互联网提供一个稳定、支持高并发连接的平台...
【Nginx+Tomcat+Memcached实现Tomcat集群和session共享】 在现代Web应用程序的部署中,为了提高系统的可用性和可扩展性,通常会采用集群技术。将多个Tomcat服务器组成一个集群,通过负载均衡策略分发用户请求,以...
使用Nginx做的负载均衡,memcache做高速cache,tomcat7.0.22做web容器环境下的session共享及缓存。 能够做到重启tomcatsession不失效或多个tomcat应用下session共享。 该RAR包包含了配置所需要的全部jar文件。
在构建高性能的Web服务时,通常会采用反向代理服务器如Nginx,缓存服务如Memcached,以及应用服务器如Tomcat的组合。本文将详细介绍如何配置Nginx、Memcached并集成到Tomcat中,同时讲解如何处理Tomcat中的jar包。 ...
本文将详细解析如何在Linux环境中安装FastDFS 5.01版本,并结合nginx和cache构建一个高效的集群环境。我们将涵盖FastDFS的基本概念、组件介绍、安装步骤以及配置优化。 FastDFS是一个高性能的开源文件系统,专为...
- 下载ngx_cache_purge模块和nginx_upstream_check_module模块。 - 配置并编译安装`ngx_openresty`,过程中需要注意添加各种模块的支持。 - **验证安装**:通过查看`/usr/servers`下的子目录,确认`luajit`、`...
**Memcached与Nginx整合使用详解** Memcached和Nginx是两个在Web开发中广泛应用的工具。Memcached是一款高性能、分布式内存对象缓存系统,它可以用来减轻数据库的负载,提高网站性能。而Nginx则是一款强大的、高...
OpenResty是基于Nginx与LuaJIT的一个高性能Web平台,它以标准Nginx核心,集成了大量的精心设计的Nginx模块,主要包括:ngxLua模块、MySQL模块、Redis模块、Memcached模块等。这些模块使得开发者能够在Nginx内直接...
Nginx本身并不内置对Memcached的支持,我们需要安装第三方模块,例如`ngx_cache_purge`或`ngx_http_memcached_module`。通常,这需要重新编译Nginx源代码,确保在编译时添加了所需的模块。 3. **配置Nginx**: ...
5. **下载额外模块**:根据项目需求可能还需要下载额外的Nginx模块,如用于清理缓存的`ngx_cache_purge`模块和用于上游服务器健康检查的`nginx_upstream_check_module`模块。 ```bash cd /usr/servers/ngx_...
下载:http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent, libevent的最新版本是libevent-1.4.13-stable。(如果你的...
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类网站应用案例 第11章 Nginx...
2. **Nginx+Memcached**:Nginx可以集成Memcached,通过`proxy_cache`模块缓存部分动态内容,减少对后端服务器的请求,进一步提高性能。 **系统实施文档** 《系统实施文档-Nginx+Tomcat+MemCached 集群配置手册.V...
测试环境: 测试客户机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 ...
sudo wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz sudo tar -gunzip memcached-1.4.5.tar.gz cd memcached-1.4.5 sudo ./configure --prefix=/usr/local/memcache-1.4.5 --with-libevent=/...