具体的实例,假设我们有一个网站www.example.com, 需要增加varnish,来提升性能。

http header头信息中的 Cache-Control: s-maxage 参数可以设置页面在varnish中缓存的时间

nginx配置:

server {
    listen 80
    server_name www.example.com;
    location / {
        proxy_pass http://127.0.0.1:800; #反向代理到varnish
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
     listen 8080;
     server_name www.example.com;
     root /var/www/example;
}

example.vcl配置:

 backend default {
     .host = "127.0.0.1";
     .port = "8080";
     .connect_timeout = 5s;
     .first_byte_timeout = 5s;
     .between_bytes_timeout = 5s;

}

sub vcl_recv {
     set req.backend=default;
     if (req.restarts == 0) {
        if (req.http.x-forwarded-for) {
            set req.http.X-Forwarded-For =
                req.http.X-Forwarded-For + ", " + client.ip;
        } else {
            set req.http.X-Forwarded-For = client.ip;
        }
     }
     if (req.request != "GET" &&
       req.request != "HEAD" &&
       req.request != "PUT" &&
       req.request != "POST" &&
       req.request != "TRACE" &&
       req.request != "OPTIONS" &&
       req.request != "DELETE") {
         /* Non-RFC2616 or CONNECT which is weird. */
         return (pipe);
     }
     if (req.request != "GET" && req.request != "HEAD") {
         /* We only deal with GET and HEAD by default */
         return (pass);
     }
     if (req.http.Authorization || req.http.Cookie) {
         /* Not cacheable by default */
         return (pass);
     }
     return (lookup);
 }

sub vcl_hit {
         #只要页面刷新(F5、CTRL+F5),页面的varnish cache均失效
        if(req.http.Cache-Control~"no-cache"||req.http.Cache-Control~"max-age=0"||req.http.Pragma~"no-cache"){
                set obj.ttl=0s;
                return (restart);
        }
     return (deliver);
 }

sub vcl_deliver {
        set resp.http.x-hits=obj.hits;
        if(obj.hits>0){
                set resp.http.X-Cache="hit";
        }
        else{
                set resp.http.X-Cache="MISS";
        }
     return (deliver);
 }

sub vcl_fetch {
     if (!beresp.cacheable) {
         return (pass);
     }
     if (beresp.http.Set-Cookie) {
         return (pass);
     }
#if(beresp.http.Pragma~"no-cache"||beresp.http.Cache-Control~"no-cache"||beresp.http.Cache-Control~"private"){
#        return (pass);
#    }

if(req.request=="GET"&&req.http.host~"bbs.xiazh.dev.aifang.com$"){
         set beresp.ttl=1200s;
     }
      if(req.request=="GET" && req.url~"\.(png|swf|txt|jpg|css|js|html|htm)$"){
         set beresp.ttl=3600s;
       }
          return (deliver);
 }

varnish基本配置(二)相关推荐

  1. ros开发增加clion常用模板及初始化配置(二)

    ros开发增加clion常用模板及初始化配置(二) 在需要共享的文件夹内用控制台运行这个命令开启服务器,共享自己的文件,局域网电脑游览器登入这台电脑的ip加8000端口号即可访问 python -m ...

  2. windows10怎么配置二个或多个JDK版本_详细图解

    本示例,一台windows10电脑安装JDK1.7和JDK1.8二个版本 基础条件:安装好JDK1.7和JDK1.8 windows10怎么配置二个或多个JDK不同版本的步骤,如下: 第一步:配置ja ...

  3. 区块链教程Fabric1.0源代码分析配置交易-生成通道配置二

    兄弟连区块链教程Fabric1.0源代码分析配置交易-生成通道配置二.Generator接口实现,即bootstrapper. type bootstrapper struct {channelGro ...

  4. Hexo的个性化配置(二)

    Hexo的个性化配置(二) 接上一篇的Hexo的个性化配置,都是一些提高网站个性化的配置,只是搭建一个简单的Hexo的网站的话,查看Hexo的使用就行.可能写的比较啰嗦,详细还是很详细的,也是自己就出 ...

  5. CHAPTER 3 Web Server - httpd配置(二)

    Web Server - httpd配置二 3.1 httpd配置 3.1.1 基于用户的访问控制 3.1.2 basic认证配置示例 1. 添加用户 2. 添加网页文件 3. 定义安全域 4. 修改 ...

  6. 高性能缓存服务器Varnish架构配置

    Varnish跟Squid都是一款内容加速缓存服务器,我们可以使用它们来对我们的网页内容进行缓存,以此来从某个方面提高用户体验度,提升网站整体的抗压能力. 目前自建的CDN中,有很多都是基于Squid ...

  7. 九、数据库群集部署、配置 (二)

    九. 数据库群集部署.配置(二) 配置DTC 角色高可用 在群集管理器对话框,选择"配置角色",如图 2.  选择"下一步",如图 3.  在选择角色对话框,选 ...

  8. vCenter6.0配置二:配置HA群集

    本文主要介绍HA群集的创建,主要有以下要求:1.每台宿主机具有冗余的网络连接,因此最好要有2块物理网卡,前文在介绍配置分布式交换机时已经满足.2.每台宿主机具有冗余的共享存储,因此最好要添加2块共享磁 ...

  9. IDEA9+Tomcat热部署配置二法

    IDEA9+Tomcat热部署配置 idea9的web开发配置方式与之前的版本发生了大的变化,idea其实也可以像MyEclipse一样自动热部署,不过配置稍微麻烦了一些. 环境: Idea9.03 ...

最新文章

  1. sql查询远程数据库的表的数据并填充到本地数据库的表
  2. php5.5 php5.6,php 5.5 5.6的区别有哪些
  3. go语言笔记——数组长度不可变,但是元素值是可变的!!!
  4. HTML DOM Event 对象
  5. 收藏:发展之道:简单与专注
  6. Mediator(中介者)--对象行为型模式
  7. mysql事务处理什么意思_mysql事务是什么意思
  8. linux3.3内核去哪下载,Linux Kernel下载|Linux Kernel v3.18.3 稳定版 - 121下载站
  9. 解决 LaTeX Error: File `.sty‘ not found.,直接进行本地导入就好了,暂时解决而已
  10. 移植性问题のLPTSTR、LPCSTR、LPCTSTR、LPSTR之间的转换 转
  11. 单片机0 99c语言程序,单片机C语言程序设计实训99例.doc
  12. SanDisk U盘加密软件 在其他u盘使用
  13. 第四章_思科ASDM网管系统搭建(java环境,jdk环境)
  14. “踢爆”职场焦虑、玩机车、文科转大厂程序媛,乘风破浪的 IT 女神太飒了!
  15. 台式机插耳机没反应没声音
  16. C/C++ __builtin 超实用位运算函数总结
  17. 物联网导论-EPC系统
  18. 西门子P L C 1200与smart的S 7通讯
  19. Visual Studio 2013 不小心关掉“解决方案资源管理器”怎么办?
  20. Opencv-图像ROI与ROI操作

热门文章

  1. 报名倒计时 | 挣脱流量束缚,社交电商的未来在哪里?
  2. MySQL高可用的几种方案
  3. 小程序如何把文字玩出花样
  4. Android RuntimePermissions运行时权限:单个运行时权限申请简例
  5. (三)RocketMQ集群部署实践
  6. [javaSE] 多线程(join方法)
  7. 成长型公司的存储架构
  8. 在asp中怎么调用带输出参数的存储过程
  9. 无风险对冲组合的设计
  10. Chinese savior crepe