`
fff
  • 浏览: 32389 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx+memcached=http cache

阅读更多
上周末在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/
分享到:
评论

相关推荐

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    # 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; # } #}...

    windows系统上nginx+memcached+tomcat的负载均衡

    - 使用第三方模块(如`nginx-cache-proxy`)或自定义脚本实现Nginx与Memcached之间的交互,根据策略决定是否从Memcached读取数据,或者将响应写入缓存。 5. **测试与监控:** - 通过发送HTTP请求验证Nginx是否...

    集群Nginx+Tomcat+Memcached

    ### 集群Nginx+Tomcat+Memcached #### 一、Nginx介绍与特性 **Nginx** 是一款广泛使用的高性能HTTP服务器和反向代理服务器,最初由俄罗斯开发者Igor Sysoev编写,旨在为互联网提供一个稳定、支持高并发连接的平台...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享.docx

    【Nginx+Tomcat+Memcached实现Tomcat集群和session共享】 在现代Web应用程序的部署中,为了提高系统的可用性和可扩展性,通常会采用集群技术。将多个Tomcat服务器组成一个集群,通过负载均衡策略分发用户请求,以...

    Nginx+tomcat7.0.22+memcached

    使用Nginx做的负载均衡,memcache做高速cache,tomcat7.0.22做web容器环境下的session共享及缓存。 能够做到重启tomcatsession不失效或多个tomcat应用下session共享。 该RAR包包含了配置所需要的全部jar文件。

    nginx和memcached配置tomcat的jar包

    在构建高性能的Web服务时,通常会采用反向代理服务器如Nginx,缓存服务如Memcached,以及应用服务器如Tomcat的组合。本文将详细介绍如何配置Nginx、Memcached并集成到Tomcat中,同时讲解如何处理Tomcat中的jar包。 ...

    FastDFS 5.01 + nginx + cache 集群安装

    本文将详细解析如何在Linux环境中安装FastDFS 5.01版本,并结合nginx和cache构建一个高效的集群环境。我们将涵盖FastDFS的基本概念、组件介绍、安装步骤以及配置优化。 FastDFS是一个高性能的开源文件系统,专为...

    京东李开涛 跟我学Nginx+Lua 开发

    - 下载ngx_cache_purge模块和nginx_upstream_check_module模块。 - 配置并编译安装`ngx_openresty`,过程中需要注意添加各种模块的支持。 - **验证安装**:通过查看`/usr/servers`下的子目录,确认`luajit`、`...

    memcached+nginx使用文档

    **Memcached与Nginx整合使用详解** Memcached和Nginx是两个在Web开发中广泛应用的工具。Memcached是一款高性能、分布式内存对象缓存系统,它可以用来减轻数据库的负载,提高网站性能。而Nginx则是一款强大的、高...

    跟我学Nginx + Lua开发

    OpenResty是基于Nginx与LuaJIT的一个高性能Web平台,它以标准Nginx核心,集成了大量的精心设计的Nginx模块,主要包括:ngxLua模块、MySQL模块、Redis模块、Memcached模块等。这些模块使得开发者能够在Nginx内直接...

    nginx配置memcached的jar文件

    Nginx本身并不内置对Memcached的支持,我们需要安装第三方模块,例如`ngx_cache_purge`或`ngx_http_memcached_module`。通常,这需要重新编译Nginx源代码,确保在编译时添加了所需的模块。 3. **配置Nginx**: ...

    跟我学Nginx+Lua开发

    5. **下载额外模块**:根据项目需求可能还需要下载额外的Nginx模块,如用于清理缓存的`ngx_cache_purge`模块和用于上游服务器健康检查的`nginx_upstream_check_module`模块。 ```bash cd /usr/servers/ngx_...

    CentOS 5.4下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)

    下载:http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent, libevent的最新版本是libevent-1.4.13-stable。(如果你的...

    ubuntu下搭建php开发环境(nginx+(cgi)php5fpm+memcached+xdebug)

    nginx的安装和配置其实很简单,nginx本身非常轻量级, 直接 sudo apt-get install nginx 就可以了 他的配置文件是在/etc/nginx/里面,网站项目路径是在/var/www里面,安装之后一定要确保nginx的启动账户有对网站目录...

    实战Nginx.取代Apache的高性能Web服务器

    9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 第11章 Nginx...

    Nginx负载均衡

    2. **Nginx+Memcached**:Nginx可以集成Memcached,通过`proxy_cache`模块缓存部分动态内容,减少对后端服务器的请求,进一步提高性能。 **系统实施文档** 《系统实施文档-Nginx+Tomcat+MemCached 集群配置手册.V...

    Nginx HttpMemcModule和直接访问memcached效率对比测试

    测试环境: 测试客户机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 ...

    编译php 5.2.14+fpm+memcached(具体操作详解)

    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=/...

Global site tag (gtag.js) - Google Analytics