要与magento一起运行的清漆设置

要与magento一起运行的清漆设置,magento,nginx,varnish,varnish-vcl,Magento,Nginx,Varnish,Varnish Vcl,我正在使用magento创建一个电子商务网站 我正在使用nginx,php5 fpm 我有512mb内存和4CPU内核 我想用这些规格的清漆。我想知道我应该在varnish配置中设置什么值,以便我的服务器能够以最小的延迟处理最大的请求?我已经尝试了一些清漆配置,但我得到的响应时间比没有清漆时要长 这是我经常使用的设置。来自magento的Varnish模块供电的页面缓存。实际上我已经 #这是由Varnish for Magento模块供电的PageCache的基本VCL配置文件。 #默认后端定义

我正在使用magento创建一个电子商务网站

我正在使用nginx,php5 fpm

我有512mb内存和4CPU内核


我想用这些规格的清漆。我想知道我应该在varnish配置中设置什么值,以便我的服务器能够以最小的延迟处理最大的请求?我已经尝试了一些清漆配置,但我得到的响应时间比没有清漆时要长

这是我经常使用的设置。来自magento的Varnish模块供电的页面缓存。实际上我已经

#这是由Varnish for Magento模块供电的PageCache的基本VCL配置文件。
#默认后端定义。将此设置为指向您的content server。
后端默认值{
.host=“127.0.0.1”;
.port=“8080”;
}
#具有更长超时值的管理后端。将其设置为与默认服务器相同的IP和端口。
后端管理员{
.host=“127.0.0.1”;
.port=“8080”;
.第一个字节超时=18000s;
.between_bytes_timeout=18000s;
}
#添加Magento服务器IP以允许从后端清除
acl清除{
“本地主机”;
"127.0.0.1";
}
子vcl_recv{
如果(请求重新启动==0){
如果(请求http.x-forwarded-for){
设置req.http.X-Forwarded-For=
req.http.X-Forwarded-For“,”client.ip;
}否则{
设置req.http.X-Forwarded-For=client.ip;
}
}
如果(请求!=“获取”&&
请求!=“头”&&
请求!=“放置”&&
请求!=“发布”&&
请求!=“跟踪”&&
请求!=“选项”&&
请求!=“删除”&&
请求!=“清除”){
/*非RFC2616或连接,这很奇怪*/
回流管;
}
#清除请求
如果(请求=“清除”){
如果(!client.ip~清除){
错误405“不允许。”;
}
清除(“obj.http.X-purge-Host~”req.http.X-purge-Host“&&obj.http.X-purge-URL~”req.http.X-purge-Regex“&&obj.http.Content-Type~”req.http.X-purge-Content-Type”);
错误200“已清除。”;
}
#切换到管理后端配置
如果(req.http.cookie~“adminhtml=){
设置req.backend=admin;
}
#默认情况下,我们只处理GET和HEAD
如果(请求!=“GET”&&req.request!=“HEAD”){
返回(通行证);
}
#在领先的HTTP方案和域的情况下规范url
设置req.url=regsub(req.url,“^http[s]”?://[^/]+”,“”);
#静态文件始终可缓存。请删除SSL标志和cookie
如果(req.url~“^/(媒体| js |皮肤)/.\(png | jpg | jpeg | gif | css | js | swf | ico)$”){
unset req.http.Https;
unset req.http.Cookie;
}
#默认情况下不可缓存
if(req.http.Authorization | | req.http.Https){
返回(通行证);
}
#不要缓存来自的任何页面
#-索引文件
# - ...
if(req.url~“^/(索引)”){
返回(通行证);
}
#只要我们有一个无缓存cookie通过请求
if(req.http.cookie~“NO_CACHE=”){
返回(通行证);
}
#规范化Aceept编码头
# http://varnish.projects.linpro.no/wiki/FAQ/Compression
if(请求http接受编码){
如果(req.url~“\(jpg | png | gif | gz | tgz | bz2 | tbz | mp3 | ogg | swf | flv)$”){
#压缩这些没有意义
删除req.http.Accept-Encoding;
}elsif(req.http.Accept-Encoding~“gzip”){
设置req.http.Accept-Encoding=“gzip”;
}elsif(req.http.Accept-Encoding~“deflate”&&req.http.user-agent!~“MSIE”){
设置req.http.Accept-Encoding=“deflate”;
}否则{
#未知算法
删除req.http.Accept-Encoding;
}
}
#删除Google gclid参数
当QS=“?gclid=AAA”时,设置req.url=regsuball(req.url,\?gclid=[^&]+$,“”);#条带
当QS=“?gclid=AAA&foo=bar”时,设置req.url=regsuball(req.url,\?gclid=[^&]+&“,”?”;#条带
当QS=“?foo=bar&gclid=AAA”或QS=“?foo=bar&gclid=AAA&bar=baz”时,设置req.url=regsuball(req.url,“&gclid=[^&]+”,”);#条带
返回(查找);
}
子vcl_散列{
设置req.hash+=req.url;
if(req.http.host){
设置req.hash+=req.http.host;
}否则{
设置req.hash+=server.ip;
}
如果(!(req.url~“^/(媒体| js |皮肤)/.\(png | jpg | jpeg | gif | css | js | swf | ico)$”){
调用设计异常;
}
返回(散列);
}
子vcl_取数{
如果(beresp.status==500){
设置beresp.saintmode=10s;
重新启动;
}
设置beresp.grace=5m;
#向对象添加禁止潜伏者标记
设置beresp.http.X-Purge-URL=req.URL;
设置beresp.http.X-Purge-Host=req.http.Host;
如果(beresp.status==200 | | beresp.status==301 | | beresp.status==404){
if(beresp.http.Content-Type~“text/html”| | beresp.http.Content-Type~“text/xml”){
if((beresp.http.Set-Cookie~“NO_CACHE=)||(beresp.ttl<1s)){
设置beresp.ttl=0s;
返回(通行证);
}
#vcl_交付至重置年龄的标记:
设置beresp.http.magicmarker=“1”;
#不要缓存cookies
unset beresp.http.set-cookie;
}否则{
#设置静态内容的默认TTL值
设置beresp.ttl=4h;
}
归还(交付);
}
返回(通行证);
}
副vcl_交付{
#调试信息
if(resp.http.X-Cache-Debug){
如果(对象命中率>0){
设置resp.http.X-Cache=“HIT”;
设置resp.http.X-Cache-Hits=obj.Hits;
}否则{
设置resp.http.X-Cache=“MISS”;
}
设置resp.http.X-Cache-Expires=resp.http.Expires;
}否则{
#删除清漆/代理标头
去除相应的http.X-清漆;
删除resp.http.Via;
删除resp.http.Age;
删除resp.http.X-Purge-URL;
删除resp.http.X-Purge-Host;
}
如果(分别为http.magicmarker){
#移除魔法标记
未设置响应
# This is a basic VCL configuration file for PageCache powered by Varnish for Magento module.

# default backend definition.  Set this to point to your content server.
backend default {
  .host = "127.0.0.1";
  .port = "8080";
}

# admin backend with longer timeout values. Set this to the same IP & port as your default server.
backend admin {
  .host = "127.0.0.1";
  .port = "8080";
  .first_byte_timeout = 18000s;
  .between_bytes_timeout = 18000s;
}


# add your Magento server IP to allow purges from the backend
acl purge {
  "localhost";
  "127.0.0.1";
}


sub vcl_recv {
    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" &&
      req.request != "PURGE") {
        /* Non-RFC2616 or CONNECT which is weird. */
        return (pipe);
    }

    # purge request
    if (req.request == "PURGE") {
        if (!client.ip ~ purge) {
            error 405 "Not allowed.";
        }
        purge("obj.http.X-Purge-Host ~ " req.http.X-Purge-Host " && obj.http.X-Purge-URL ~ " req.http.X-Purge-Regex " && obj.http.Content-Type ~ " req.http.X-Purge-Content-Type);
        error 200 "Purged.";
    }

    # switch to admin backend configuration
    if (req.http.cookie ~ "adminhtml=") {
        set req.backend = admin;
    }

    # we only deal with GET and HEAD by default    
    if (req.request != "GET" && req.request != "HEAD") {
        return (pass);
    }

    # normalize url in case of leading HTTP scheme and domain
    set req.url = regsub(req.url, "^http[s]?://[^/]+", "");

    # static files are always cacheable. remove SSL flag and cookie
    if (req.url ~ "^/(media|js|skin)/.*\.(png|jpg|jpeg|gif|css|js|swf|ico)$") {
        unset req.http.Https;
        unset req.http.Cookie;
    }

    # not cacheable by default
    if (req.http.Authorization || req.http.Https) {
        return (pass);
    }

    # do not cache any page from
    # - index files
    # - ...
    if (req.url ~ "^/(index)") {
        return (pass);
    }

    # as soon as we have a NO_CACHE cookie pass request
    if (req.http.cookie ~ "NO_CACHE=") {
        return (pass);
    }

    # normalize Aceept-Encoding header
    # http://varnish.projects.linpro.no/wiki/FAQ/Compression
    if (req.http.Accept-Encoding) {
        if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|flv)$") {
            # No point in compressing these
            remove req.http.Accept-Encoding;
        } elsif (req.http.Accept-Encoding ~ "gzip") {
            set req.http.Accept-Encoding = "gzip";
        } elsif (req.http.Accept-Encoding ~ "deflate" && req.http.user-agent !~ "MSIE") {
            set req.http.Accept-Encoding = "deflate";
        } else {
            # unkown algorithm
            remove req.http.Accept-Encoding;
        }
    }

    # remove Google gclid parameters
    set req.url = regsuball(req.url,"\?gclid=[^&]+$",""); # strips when QS = "?gclid=AAA"
    set req.url = regsuball(req.url,"\?gclid=[^&]+&","?"); # strips when QS = "?gclid=AAA&foo=bar"
    set req.url = regsuball(req.url,"&gclid=[^&]+",""); # strips when QS = "?foo=bar&gclid=AAA" or QS = "?foo=bar&gclid=AAA&bar=baz"

    return (lookup);
}

sub vcl_hash {
    set req.hash += req.url;
    if (req.http.host) {
         set req.hash += req.http.host;
    } else {
        set req.hash += server.ip;
    }
    if (!(req.url ~ "^/(media|js|skin)/.*\.(png|jpg|jpeg|gif|css|js|swf|ico)$")) {
        call design_exception;
    }
    return (hash);
}

sub vcl_fetch {
    if (beresp.status == 500) {
       set beresp.saintmode = 10s;
       restart;
    }
    set beresp.grace = 5m;

    # add ban-lurker tags to object
    set beresp.http.X-Purge-URL = req.url;
    set beresp.http.X-Purge-Host = req.http.host;

    if (beresp.status == 200 || beresp.status == 301 || beresp.status == 404) {
        if (beresp.http.Content-Type ~ "text/html" || beresp.http.Content-Type ~ "text/xml") {
            if ((beresp.http.Set-Cookie ~ "NO_CACHE=") || (beresp.ttl < 1s)) {
                set beresp.ttl = 0s;
                return (pass);
            }

            # marker for vcl_deliver to reset Age:
            set beresp.http.magicmarker = "1";

            # Don't cache cookies
            unset beresp.http.set-cookie;
        } else {
            # set default TTL value for static content
            set beresp.ttl = 4h;
        }
        return (deliver);
    }

    return (pass);
}

sub vcl_deliver {
    # debug info
    if (resp.http.X-Cache-Debug) {
        if (obj.hits > 0) {
            set resp.http.X-Cache = "HIT";
            set resp.http.X-Cache-Hits = obj.hits;
        } else {
           set resp.http.X-Cache = "MISS";
        }
        set resp.http.X-Cache-Expires = resp.http.Expires;
    } else {
        # remove Varnish/proxy header
        remove resp.http.X-Varnish;
        remove resp.http.Via;
        remove resp.http.Age;
        remove resp.http.X-Purge-URL;
        remove resp.http.X-Purge-Host;
    }

    if (resp.http.magicmarker) {
        # Remove the magic marker
        unset resp.http.magicmarker;

        set resp.http.Cache-Control = "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
        set resp.http.Pragma = "no-cache";
        set resp.http.Expires = "Mon, 31 Mar 2008 10:00:00 GMT";
        set resp.http.Age = "0";
    }
}

sub design_exception {
}