zoukankan      html  css  js  c++  java
  • vanish高速*服务器配置

    打开/etc/vanish.conf(自己创建)配置文件 首先声明一个backend,例如:

    backend nginx {
        .host = "127.0.0.1"; #后端主机IP
        .port = "80";      #监听端口
        .max_connections = 500; #后端服务器最大连接数
        .connect_timeout = 1s;  #等待连接后端的时间
        .first_byte_timeout = 3s;    #等待从backend传输过来的第一个字符的时间
        .between_bytes_timeout = 1s; #两个字符的间隔时间
        #后端探针,判断后端服务器是否健康
        .probe = { 
            .url = "/";
            .timeout = 0.3s;
            .window = 8; # poll数量
            .threshold = 5; # poll成功数量
            .initial = 5; # 探针数量 一般与.threshold相同
        }   
    }
    
    backend httpd {
        .host = "127.0.0.1";
        .port = "8080";
    }

    设置规则:

    acl purge {
        "localhost";
        "127.0.0.1";
        "192.168.1.0"/24;
    }

    设置负载:

    director server random {
        {
            .backend = nginx;
            .weight = 6; #权重
        }
        {
            .backend = nginx;
            .weight = 4; #权重
        }
    }

    sub vcl_recv:在请求的开始被调用,在接收、解析后,决定是否响应请求,怎么响应,使用哪个后台服务器

    sub vcl_recv {
    
        #根据访问域名判断使用的后端
        if(req.http.host ~ "^localhost$") {
            set req.backend = server;
        }
    
        #清除缓存
        if(req.request == "PURGE" && !(client.ip ~ purge)) {
            error 405 "Access denied.";
        }
    
        #不缓存php
        if(req.url ~ "\.php") {
            return (pass);
        }
    
        #只缓存GET方法的请求
        if(!(req.request == "GET")) {
            return (pipe);
        }
    
        return (lookup);
    }
    

    sub vcl_fetch:在一个文件成功从后台获取后被调用,他的任务就是改变响应的头文件,触发ESI进程,在后台服务器轮询尝试失败的请求

    sub vcl_fetch {
        if(req.url ~ "js|css") {
            set beresp.ttl = 3600s;
        } else {
            set beresp.ttl = 30d;
        }
        return (deliver);
    }
    

    关于varnish的一些说明:

    # 关于vcl_recv

    在请求的开始被调用,在接收、解析后,决定是否响应请求,怎么响应,使用哪个后台服务器。在vcl_recv中,您可以修改请求,比如您可以修改cookies,添加或者删除请求的头信息。注意vcl_recv中只有请求的目标,req is available

    # 关于vcl_fetch 

    在一个文件成功从后台获取后被调用,他的任务就是改变响应的头文件,触发ESI进程,在后台服务器轮询尝试失败的请求。在vcl_fetch中一样的包含请求的目标,req,available,哪里通常是backendresponse,beresp.beresp将会包含后端服务器的HTTP的头信息 # # vcl中动作说明 # pass 当一个请求被pass后,这个请求将通过varnish转发到后端服务器,但是它不会被缓存。pass可以放在vcl_recv 和 vcl_fetch中

    # lookup 当一个请求在vcl_recv中被lookup后,varnish将从缓存中提取数据,如果缓存中没有数据,将被设置为pass,不能在vcl_fetch中设置lookup # pipe pipe和pass相似,都要访问后端服务器,不过当进入pipe模式后,在此连接未关闭前,后续的所有请求都发到后端服务器 # deliver 请求的目标被缓存,然后发送给客户端esi

    # vcl中结构说明

    req 请求目标,当varnish接收到一个请求,这时req object就被创建了,你在vcl_recv中的大部分工作,都是在req object上展开的

    beresp 后端服务器返回的目标,它包含返回的头信息,你在vcl_fetch中的大部分工作都是在beresp object上开展的

    obj 被cache的目标,只读的目标被保存于内存中,obj.ttl的值可修改,其他的只能读

    原创文章,转载请注明出处:http://www.dreamans.com/post/86

  • 相关阅读:
    python 学习常见问题笔记
    mac os 使用 from scipy.misc import imread ImportError: cannot import name 'imread'
    mac解决安装提示“xxx软件已损坏,打不开,您应该将它移到废纸篓”的提示
    一文搞懂HMM(隐马尔可夫模型)
    docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
    centos 7 安装python3 & pip3
    HTK HResults计算字错率(WER)、句错率(SER)
    sublime text3安装ConvertToUTF8
    intellij idea 解决2019年4月到期延期问题
    Python 3 教程
  • 原文地址:https://www.cnblogs.com/dreamans/p/2793098.html
Copyright © 2011-2022 走看看