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

关于nginx的proxy_cache和ssi的结合使用

阅读更多

这里我要提到的是另一种实现方式proxy_cache结合ssi来实现。

 

先大致介绍下nginx的proxy_cachehttp://blog.s135.com/nginx_cache/

 

有兴趣的同学可以顺带了解下nginx的proxy_store模块。不过个人一直比较看好proxy_cache,

原因嘛:不需要借助crontab等来定时刷新;也不需要关心分布式同步问题。

 

再介绍下nginx的ssi .

开启方式:

 

location / {

            ssi on;

}

使用示例:

<!--#include virtual="/ssicache/common/1234/works-rank.html"-->

 

proxy_cache结合ssi来实现具体使用示例:

 

 

1.在你的静态页中ssi一个动态内容:

<!--#include virtual="/ssicache/common/1234/works-rank.html"-->

 

这个works-rank.html大家困惑了吧,怎么看都是静态页面块呀,别急。

 

2.写一个代理server:

 

 

server{

        listen       80;

        server_name ssi.bisai.com;

         ....省略...

 

        rewrite ^/ssicache/common/(.*)/(.*)\.html$ /partial/contest/$1/$2.do last;

        location / {

            proxy_pass   http://contest_servers;

            include proxy.conf;

        }

}

 

这样一来,works-rank.html的请求就被rewrite 到/partial/contest/1234/works-rank.do上面去了^_^

 

3.将动态请求works-rank.do返回的数据用proxy_cache缓存起来,减少对服务器的动态请求。

PS:配置proxy_cache的时候,实际上是缓存^/ssicache的请求。

因为实际最先请求的是/ssicache/common/1234/works-rank.html,发现works-rank.html缓存过期了,才会

重新去ssi.bisai.com请求,最后请求被rewrite到works-rank.do上面去,将得到的内容继续缓存。

 

 

server{

        listen       80;

        server_name bisai.com;

        ...省略...

        location / {

            ssi on;

            proxy_pass   http://contest_servers;

            include proxy.conf;

        }

 

        location ~ ^/ssicache/ {

        proxy_cache cache_one;

proxy_cache_valid  200 304 10m;

proxy_cache_key $host$uri;

proxy_set_header Host "ssi.bisai.com";

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header http_x_forwarded_for $http_x_forwarded_for;

proxy_set_header SCRIPT_URL $request_uri;

proxy_pass http://ssi.bisai.com;

        }

        ....省略....

}

 

好啦,到这为止,功能基本实现了,细节上处理大家可以查阅上面的资料,比如:

 

1.proxy_temp_path和 proxy_cache_path的设置。

2.如果使用的是velocity模板,使用ssi 语法时对"#"的处理。

 

这些都很简单了。

这样做完之后,你的这个动态模块实际上是可以共用的,任何需要这样一个模块的地方,都可以直接SSI 进来。

实际上,就是如果你用JS来加载数据实现的话,也同样是可以使用proxy_cache将JS的请求缓存起来的,减少动态请求。

 

 

  • 大小: 119.9 KB
分享到:
评论
2 楼 javis163 2012-12-29  
rady 写道
那个“152人已报名”,报名人数不是动态的吗

是动态,这整个页面都是动态请求,但很多模块是缓存模块。这与我介绍的技术是2种不同的实现方式。
1 楼 rady 2012-12-13  
那个“152人已报名”,报名人数不是动态的吗

相关推荐

    Nginx之proxy_redirect使用详解

    在讨论Nginx的proxy_redirect指令时,我们首先要明确其在Nginx配置中的作用和重要性。proxy_redirect指令主要用于在反向代理过程中修改响应头中的Location和Refresh字段值。在Web服务器配置中,特别是在使用Nginx...

    Nginx启用proxy_cache缓存的方法

    3. proxy_cache_key:设置用于缓存文件的命名规则,通常是Nginx的内置变量组合,例如使用$host和$request_uri来生成缓存文件名。 4. proxy_cache_valid:针对不同的HTTP响应状态码设置缓存时间,例如可以设置对304...

    nginx_tcp_proxy_module-master.zip

    nginx_tcp_proxy_module-master.zip

    ngx_http_proxy_connect_module.zip

    Nginx是一款高性能的Web服务器和反向代理服务器,以其高效的并发处理能力、低内存占用和丰富的模块库而著名。它的工作模式基于事件驱动,可以高效地处理大量的连接请求,特别适合用作负载均衡器或缓存服务器。 ngx_...

    nginx_cache_purge.zip

    从提供的文件名"ngx_cache_purge-2.3.tar.gz"和"ngx_cache_purge-master.zip"来看,这是插件的不同版本。通常,我们可以按照以下步骤进行安装: 1. 解压下载的源码包,例如:`tar -zxvf ngx_cache_purge-2.3.tar.gz...

    nginx系列(十)nginx缓存代理proxy_cacahe和CDN实现的原理

    例如,可以配置一个专门用于CDN的服务器块,使用proxy_pass指令指定CDN的URL,同时结合proxy_cache使用,实现内容的缓存和分发。 4. **Nginx源码分析**:对于深入了解Nginx的工作机制,源码阅读是非常有价值的。...

    nginx缓存清除插件ngx_cache_purge.zip

    ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_cache_purge on|off|&lt;method&gt; [from all|&lt;ip&gt; [.....

    nginx_tcp_proxy_module-master

    1. **获取源码**:首先,你需要从项目仓库下载`nginx_tcp_proxy_module`的源代码,如本例中的`nginx_tcp_proxy_module-master`压缩包。 2. **编译Nginx**:在编译Nginx时,将模块源码添加到配置中。这通常涉及以下...

    Nginx反向代理proxy_cache_path directive is not allowed错误解决方法

    nginx: [emerg] “proxy_cache_path” directive is not allowed here in /etc/nginx/conf.d/default.conf:29 提示意思“proxy_cache_path指令不被允许”,在官网上查找了相关说明,也没有发现问题,最后看应用范围...

    nginx静态文件缓存的解决方案1

    这里,`proxy_pass` 指定后端服务器,`proxy_cache` 使用之前定义的 `cache_one` 区域。`proxy_cache_valid` 分别为不同状态码设置了缓存有效期。`proxy_cache_key` 用于生成缓存键,`expires` 设置了其他类型请求的...

    使用nginx作为http/https正向代理ipm包,包含ngx_http_proxy_connect_module 模块,第三方图片代理,带有缓存

    使用nginx作为http/https正向代理ipm包,包含ngx_http_proxy_connect_module 模块,附带了第三方图片代理配置,带有缓存,可直接做图片服务器 下载后执行:rpm -ivh nginx-1.12.2-1.el7_4.ngx.x86_64.rpm 打包教程:...

    nginx proxy_cache批量清除缓存的脚本介绍

    Nginx是一款高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。...不过在运行脚本之前,了解nginxproxy_cache的工作机制和脚本的执行逻辑是很有必要的,以确保可以正确处理任何可能出现的问题。

    详解Nginx启用proxy_buffer缓冲

    顾名思义,proxy_buffer 是用于 proxy 模式的缓冲功能。本文介绍其基本用法。 buffer 是什么 buffer ,即缓冲区,它在 Nginx 上发挥的作用就是 启用一个缓冲区,先在这个缓冲区内进行存储,再把数据发送出去 。和...

Global site tag (gtag.js) - Google Analytics