当前位置: 首页 > 编程日记 > 正文

Nginx proxy_cache 使用示例

原文出处:http://blog.chenlb.com/2010/04/nginx-proxy-cache.html

动态网站使用缓存是很有必要的。前段时间使用了 nginx proxy_stroe 来保存静态页面,以达到缓存的目的。当然 proxy stroe 用来做缓存是不够好的方案。

缓存这一块当然还有 squid 之类的独立缓存服务器。如果使用 nginx 为 web 服务器,还要加个 squid 来缓存,是觉得多了一个 http 请求层。幸好 nginx 0.7 有了 proxy_cache 来做这个缓存的事。

之前来有个 ncache 是新浪员工开发的 nginx 模块(好像只能在 nginx 0.6 中编译无运行)。已经停止维护了,已经被加到 nginx 标准库里了。昨天还不知道 proxy_cache 就是 ncache 的功能时,还在努力匹配 ncahce,浪费了N多时间,最终没看到可以缓存。后来尝试 proxy_cache 才解决,且使用简单。

安装 Nginx 请看:安装 Nginx 配置负载均衡,如果没有 pcre 库,可以到http://sourceforge.net/projects/pcre/files/ 下载(我用的是 8.02)。

nginx 0.7.65 默认安装就可以了。

安装好后开始匹配 proxy_cache,先准备后台服务器的文件,如是 time.jsp,内容:

  1. <%=new java.util.Date() %>
<%=new java.util.Date() %>

conf/nginx.conf:

  1. user  nobody;
  2. worker_processes  1;
  3. error_log  logs/error.log;
  4. pid        logs/nginx.pid;
  5. events {
  6. worker_connections  1024;
  7. use epoll;
  8. }
  9. http {
  10. include       mime.types;
  11. default_type  application/octet-stream;
  12. log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  13. '$status $body_bytes_sent "$http_referer" "$request_body" '
  14. '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';
  15. sendfile        on;
  16. keepalive_timeout  60;
  17. proxy_cache_path /var/cache0 levels=1:2 keys_zone=pnc:100m inactive=2h max_size=10g;
  18. upstream backend {
  19. server 192.168.1.2:8080  weight=6;
  20. #server 192.168.1.3:8080  weight=4;
  21. }
  22. server {
  23. listen       80;
  24. server_name  localhost;
  25. access_log  logs/access.80.log  main;
  26. location / {
  27. proxy_cache pnc;
  28. proxy_temp_path /var/nginx_temp;
  29. #proxy_cache_key "$request_uri$request_body";
  30. #proxy_cache_methods GET POST;
  31. proxy_cache_valid 200 304 1m;
  32. proxy_pass http://backend;
  33. }
  34. error_page   500 502 503 504  /50x.html;
  35. location = /50x.html {
  36. root   html;
  37. }
  38. }
  39. }

启动 nginx 后,打开浏览器,可以狂刷 Ctrl + F5,可以看到一样的页面。一分钟后再会一个新的页面。

是 proxy_cache_valid 200 304 1m; 告诉 nginx 后台返回的结果是 200 或 304 的响应,用 1m(分钟)的缓存。

proxy_cache_key 默认是 "$scheme$host$request_uri"。

proxy_cache_methods 默认是 GET HEAD。

当要缓存 post 请求后,要用 proxy_cache_methods POST 来打开。并且 proxy_cache_key 要对,post 的请求 query string 是在请求体内,所以加 $request_body 作为 key 的一部分。要用 post ,上面匹配去了注释就可以了。

相关文章:

Lync 小技巧-49-Lync 自动备份-批量管理-用户(免费视频)

自从2010年开始&#xff0c;自从Lync Server 2010开始&#xff0c;我都在研究Lync 自动备份和批量管理用户&#xff0c;当年都做成功&#xff0c;做标准过&#xff0e;不过都是图片&#xff0c;未写博客&#xff0c;为什么呢?有可能你有这样那样的假设&#xff0c;但是今天可以…

数学很差的人能当程序员吗?

【CSDN 编者按】作者在大学时代受《程序员》杂志的启发&#xff0c;从数学专业投身计算机编程&#xff0c;毕业后进入软件开发行业。过去9年&#xff0c;他去过大厂敲代码&#xff0c;也曾在创业公司带过团队&#xff0c;一直从事“下一代”软件技术的研发&#xff0c;对于网上…

Nginx 学习笔记(六)引入线程池 性能提升9倍

原文地址&#xff1a;https://www.cnblogs.com/shitoufengkuang/p/4910333.html 一、前言 1、Nignx版本&#xff1a;1.7.11 以上 2、NGINX采用了异步、事件驱动的方法来处理连接。这种处理方式无需&#xff08;像使用传统架构的服务器一样&#xff09;为每个请求创建额外的专用…

Nginx源代码分析 - 日志处理

我看Nginx源代码的时候&#xff0c;感觉整个系统都在传递log指针。log在nginx里是比较关键的。日志和内存分配是最基础的两个起点代码&#xff0c;最好是在自己写的程序框架中早点完善并实现。以免未来要用大量的精力调整。1. 日志的源代码位置日志的源代码在src/code/ngx_log.…

strom.yaml配置

2019独角兽企业重金招聘Python工程师标准>>> 配置storm.yaml storm发行版在conf/storm.yaml包含了一些配置信息。你可以在这里看到默认配置。storm.yaml里面的配置比default.xml的优先级要高&#xff0c; 下面是要运行storm集群所必须的配置: 1. storm.zookeeper.se…

用 Python 快速制作海报级地图

作者&#xff1a;费弗里 来源&#xff1a;Python大数据分析 1 简介 基于Python中诸如matplotlib等功能丰富、自由度极高的绘图库&#xff0c;我们可以完成各种极富艺术感的可视化作品&#xff0c;关于这一点我在系列文章在模仿中精进数据可视化中已经带大家学习过很多案例了。 …

关于VS2012如何安装Windows Phone Toolkit

最近也是碰到很多问题&#xff0c;在编程的时候。这个问题是我遇到的比较棘手的一个&#xff0c;问了一堆人都说得很是模糊&#xff0c;最后还是琢磨出来了&#xff0c;深感欣慰。写下来以防以后忘记了怎么操作的&#xff0c;也期望能帮助到遇到同样问题的你。 首先让我先说了几…

论Oracle 11g数据库备份与恢复策略

11G中有个新特性&#xff0c;当表无数据时&#xff0c;不分配segment&#xff0c;以节省空间解决方案&#xff1a;1、insert一行&#xff0c;再roolback就会产生segment了该方法是在空表中插入一行数据&#xff0c;再删除&#xff0c;就会产生segment。则在数据库导出时可以导出…

使Apache实现gzip压缩

众所周知&#xff0c;在HTTP1.1中支持gzip压缩&#xff0c;这样可以缩小页面的容量从而加快页面的显示速度。可以使用常用HTTP抓包工具来检测一下你的站点是否开始了gzip压缩。 Apache默认的http.conf配置文件中没有开启gzip压缩&#xff0c;apache1.3.x可以用mod_gzip进行优化…

脸书 AI 识别误将黑人标记为「灵长类动物」

整理 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 最近&#xff0c;Facebook用户在观看一段以黑人为主角的视频时&#xff0c;会看到一个自动生成的提示&#xff0c;询问他们是否愿意“继续观看灵长类动物的视频”。 视频的内容其实是几个黑人和警察发…

Forefront for OCS2007之部署

1. 前提准备①OCS服务器②创建一个域账户&#xff0c;用于Forefront IM通告。帐户还将用于运行 ForefrontRTCProxy 服务用来截取来自 Office Communications Server SIP 通信进行扫描。此帐户必须满足以下要求&#xff1a;该帐户必须被为ForefrontRTCProxy服务授予 “ 运行为服…

Memcached在大型网站中应用

memcached是一个高性能的分布式的内存对象缓存系统&#xff0c;通过在内存里维护一个统一的巨大的hash表&#xff0c;它能够用来存储各种格式的数据&#xff0c;包括图像、视频、文件以及数据库检索的结果等。最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采…

iOS开发-照片选择

本来想做个注册登录的表单的&#xff0c;想想还是先做个简单的头像选择&#xff0c;一般情况下不管是内部管理系统还是面向公众的互联网公司&#xff0c;注册登录是免不了的&#xff0c;用户头像上传是免不了的&#xff0c;尤其是企业用户&#xff0c;上传了自己的图片才感觉自…

打造一流创新环境:协作、开放、可持续

作者 | 微软亚洲研究院院长 周礼栋 毋庸置疑&#xff0c;人类是群居物种。早在两千多年前&#xff0c;亚里士多德便在其著述《政治学》里揭示了人类群居共利协作的趋向&#xff1a;个体组成家庭&#xff0c;家庭组成村落&#xff0c;村落组成城池&#xff0c;城池组成国家和社会…

Ansible源码解析 Inventory组概念

group.py 作者 煮酒品茶 一个组的Class&#xff0c;包含对外方法以及属性如下。 组做为inventory的子节点&#xff0c;会有嵌套组&#xff0c;组变量&#xff0c;组内主机&#xff0c;子组&#xff0c;父组的一些概念 [ name, hosts, vars, child_groups, parent_groups, depth…

Hadoop简要介绍

本文大部分内容都是从官网Hadoop上来的。其中有一篇介绍HDFS的pdf文档&#xff0c;里面对Hadoop介绍的比较全面了。我的这一个系列的Hadoop学习笔记也是从这里一步一步进行下来的&#xff0c;同时又参考了网上的很多文章&#xff0c;对学习Hadoop中遇到的问题进行了归纳总结。 …

超 40W 奖金池等你来战!第二届“长沙银行杯”腾讯云启创新大赛火热来袭!...

HEY&#xff01;你在等待一个机会提升自己的能力吗&#xff1f;现在机会来啦&#xff01;第二届“长沙银行杯”腾讯云启创新大赛如约而至&#xff01;现在&#xff0c;让更多人见证你的创新能力和新鲜想法第二届“长沙银行杯”腾讯云启创新大赛由长沙银行联合腾讯云、腾讯云启共…

(转)AppCan中调用系统浏览器打开网页

<!DOCTYPE html> <html> <head> <style>body{ background:#fff; font-size:30px;}</style> <meta charset"utf-8"> <script> function openUrl(url){if(uexWidgetOne.getPlatform()0){//IOS设备uexWidget.loadApp(url,,);…

Python optionParser模块的使用方法

Python 有两个内建的模块用于处理命令行参数&#xff1a; 一个是 getopt&#xff0c;《Deep in python》一书中也有提到&#xff0c;只能简单处理 命令行参数&#xff1b; 另一个是 optparse&#xff0c;它功能强大&#xff0c;而且易于使用&#xff0c;可以方便地生成标准的、…

squid命中率分析参数注释

默认squid配置文件里面已经加上acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objecthttp_access allow all#cachemgr_passwd pass allhttp_access allow Manager all 3.0直接看这里基本的使用方法*取得squid运行状态信息&#xff1a; squidclient -p 80 mgr:info //注…

库克退休前的最后一战:不是苹果汽车而是……

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 上个月库克迎来了他担任苹果 CEO 十周年的日子&#xff0c;我们也为此统计了一份成绩单&#xff1b;而下一个十年&#xff0c;库克可能不会再陪苹果完整走过了&#xff1a;今年 4 月库克在采访中表示…

VIM技巧:显示行号

在vi的命令模式下输入":set nu"&#xff0c;就有行号了&#xff0c;取消行号输入":set nonu"。 命令只对当前文档有效&#xff0c;如果想使vi打开文档时默认显示行号&#xff0c;可以修改vi的配置文件。 # vi ~/.vimrc 在这个文件中&#xff0c;添加 set n…

Python 自动化运维 pycurl

1.探测web服务质量&#xff08;HTTP状态码&#xff0c;请求延时&#xff0c;HTTP头信息&#xff0c;下载速度等&#xff09; web服务质量&#xff1a;1.服务可用性 2.服务响应速度 2.实例 12345678910111213141516171819202122232425262728293031323334353637383940414243impor…

Squid3反向代理安装与配置

一、编译安装 下载 #wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE25.tar.gz //找到地址#tar zxvf squid-3.0.STABLE25.tar.gz //稳定版#cd squid-3.0.STABLE25 #./configure --prefix/usr/local/squid / //必须 //以下几步可选 --enable-arp-ac…

ServiceStack OrmLite 数据库查询 几个实用方法 (继承表格式化集合等)

执行SQL语句&#xff1a;int result db.SqlScalar<int>("SELECT OBJECT_ID(name)", new { name "SomeName" });继承表的实现 &#xff08;存储于同一个表中&#xff09;[Alias("Table")] public abstract class MyBaseClass {public…

Deepsort + Yolo 实现行人检测和轨迹追踪

作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引言 行人检测是近年来计算机视觉领域的研究热点&#xff0c;同时也是目标检测领域中的难点。其目的是识别和定位图像中存在的行人&#xff0c;在许多领域中都有广泛的应用。交通安全方面&#xff0c;无人驾驶汽车通过提前…

推荐15个国外使用 CSS3 制作的漂亮网站

今天分享的作品集网站有些特别&#xff0c;因为他们都是使用 CSS3 技术制作的。对于设计师来说&#xff0c;为了吸引注意力&#xff0c;作品集必须展示出你的能力&#xff0c;这有点像制作简历&#xff0c;要让人们看到你所擅长的&#xff0c;突出的部分&#xff0c;这是一次推…

7_2判断两个单链表是否相交,若相交,求出第一个交点

转载请注明出处&#xff1a;http://www.cnblogs.com/wuzetiandaren/p/4251372.html 声明&#xff1a;现大部分文章为寻找问题时在网上相互转载&#xff0c;此博是为自己做个记录记录&#xff0c;方便自己也方便有类似问题的朋友&#xff0c;本文的思想也许有所借鉴&#xff0c;…

对抗软件系统复杂性①:如无必要,勿增实体

作者 | 袁进辉 我们经常面临如何评价一个大型软件系统质量的问题。首要的评价指标肯定是功能&#xff0c;软件是否满足主要的需求(do right things)。如果有多条技术路径可以实现同样的功能&#xff0c;人们倾向于选择更简单的办法。奥卡姆剃刀准则“如无必要&#xff0c;勿增实…

修改squid的Header中的X-Cache为Powered-By-LinuxTone

今天分析别人网站的时候&#xff0c;注意到国内的chinacache服务商的CDN加速&#xff0c;把squid默认的X-Cache修改为Powered-By-ChinaCache&#xff0c;如下图&#xff1a;以前注意了但是没去研究过&#xff0c;今天刚好有点空挡自己就来研究看看。我的squid版本&#xff1a;s…