Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Discuz 和 Varnish 配合做页面和静态文件反向代理 V2

[复制链接]
jxmd007 发表于 2013-7-25 12:30:57 | 显示全部楼层 |阅读模式


      经过一段时间的运行和一些问题修正,现在放出V2版的varnish规则,和V1版相比,V2版重新修改了配置的结构,使配置模块化,同时针对discuz做了调整和优化,增加了一个基于inotify的 缓存自动刷新脚本
论坛也有原来的php5.2升级为5.4,并加了APC的OPCODE cache,优化了php的配置,这部分我以后另行发帖
以下是V2版的Varnish配置,V1版的链接是  https://discuz.dismall.com/thread-3324985-1-1.html




backend default {
        .host = "127.0.0.1";
        .port = "80";
}
acl purge {
        "localhost";
        "127.0.0.1";
}


sub vcl_recv_common {
        remove req.http.Cache-Control;
        remove req.http.Pragma;
        set req.http.X-Device = "pc";
        if (req.http.User-Agent ~ "iPad" ) {
                set req.http.X-Device = "ipad";
        }
        elseif (req.http.User-Agent ~ "iP(hone|od)") {
                set req.http.X-Device = "ios";
        }
        elseif (req.http.User-Agent ~ "Android"){
                set req.http.X-Device = "android";
        }
        elseif (req.http.User-Agent ~ "SymbianOS" || req.http.User-Agent ~ "^BlackBerry" || req.http.User-Agent ~ "^SonyEricsson" || req.http.User-Agent ~ "^Nokia" || req.http.User-Agent ~ "^SAMSUNG" || req.http.User-Agent ~ "^LG")                 {
                set req.http.X-Device = "mobile-other";
        }
        if (req.url ~ "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|gif|jpg|jpeg|png|swf|xml|txt|js|css|bmp)(\?.*|)$") {
                remove req.http.Cookie;
                remove req.http.User-Agent;
                remove req.http.Accept-Encoding;
                set req.url = regsub(req.url, "\?.*$", "");
                if (req.url ~ "\.(xml|txt|js|css|bmp)(\?.*|)$"){
                        set req.http.Accept-Encoding = "gzip";
                }
                return (lookup);
        }
        if (req.request == "PURGE") {
                if (client.ip ~ purge) {
                        return(lookup);
                }
        }
}
sub vcl_recv_gznf_net {
        if (req.http.host ~ "^(.*.)?gznf\.net$"){
                if(req.http.Cookie !~ "RA6v_2132_auth=" &&  req.url ~ "(index\.php(!\?)|forum\.php(!\?)|portal\.php(!\?)|home\.php(!\?)|group\.php(!\?)|denglu\.php(!\?)|\/party\/|\/buy\/|.*\.html(\?.*|)$)"){
                                remove req.http.Cookie;
                                remove req.http.Accept-Encoding;
                                return (lookup);
                }        
        }
}
sub vcl_fetch_common {
        set beresp.grace = 30s;
        if (req.url ~ "\.(htm|html|xml|js|css|bmp|txt|php)(\?.*|)$") {
                set beresp.do_gzip = true;
        }
        if(req.url ~ "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|gif|jpg|jpeg|png|swf|xml|txt|js|css|bmp)(\?.*|)$"){
                remove beresp.http.Cookie;
                remove beresp.http.User-Agent;
                remove beresp.http.Accept-Encoding;
                remove beresp.http.Set-Cookie;
                remove beresp.http.Cache-Control;
                remove beresp.http.Date;
                remove beresp.http.ETag;
                remove beresp.http.Expires;
                remove beresp.http.Vary;
                set beresp.ttl = 3600s;
        }
}
sub vcl_fetch_gznf_net {
        if (req.http.host ~ "^(.*.)?gznf\.net$"){
                if(req.http.Cookie !~ "RA6v_2132_auth=" && req.url !~ "(index\.php(!\?)|forum\.php(!\?)|portal\.php(!\?)|home\.php(!\?)|group\.php(!\?)|denglu\.php(!\?)|\/party\/|\/buy\/|.*\.html(\?.*|)$))"){
                                remove beresp.http.Cookie;
                                remove beresp.http.Accept-Encoding;
                                set beresp.ttl = 120s;
                }        
        }
}
sub vcl_recv {
        set req.grace = 30s;
        remove req.http.X-Forwarded-For;
        set req.http.X-Forwarded-For = client.ip;
        set req.http.X-Full-Uri = req.http.host + req.url;
        if (req.http.host ~ "^((.*.)?gznf\.net$|(.*.)?gznf\.cn$)" && req.http.host !~ "^(www\.gznf\.net$|wap\.gznf.net$)") {
                error 750 "http://www.gznf.net" + req.url;
        }
        call vcl_recv_common;
        call vcl_recv_gznf_net;
        return (pass);        
}
sub vcl_error {
        if (obj.status == 750) {
                set obj.http.Location = obj.response;
                set obj.status = 301;
                return(deliver);
        }
}
sub vcl_pipe {
        return (pipe);
}
sub vcl_hash {
        hash_data(req.url);
        hash_data(req.http.X-Device);
        hash_data(req.http.host);
        return (hash);
}
sub vcl_hit {
        if (req.request == "PURGE") {
                set obj.ttl = 0s;
                error 200 "Purged.";
        }else{
                return (deliver);
        }
}
sub vcl_miss {
        if (req.request == "PURGE") {
                error 404 "Not in cache.";
        }
        set bereq.url = regsub(req.url, "\?.*", "");
        return (fetch);
        
}
sub vcl_fetch {
        call vcl_fetch_common;
        call vcl_fetch_gznf_net;
        if (beresp.status >= 500) {
                return (restart);
        }
        return (deliver);
}
sub vcl_deliver {
        if (obj.hits > 0) {
                set resp.http.X-Cache = "HIT";
        } else {
                set resp.http.X-Cache = "MISS";
        }
        remove resp.http.X-Varnish;
        remove resp.http.Via;
        remove resp.http.X-Powered-By;
        remove resp.http.Server;
        return (deliver);
}
sub vcl_init {
        return (ok);
}
sub vcl_fini {
        return (ok);
}






如果问题,可以QQ联系我,壹扒叁贰叁叁伍叁零,广告一下,我也接网站、论坛、网游等的运维兼职工作





Hbbao 发表于 2013-7-29 21:54:09 | 显示全部楼层
目前只有一台独立vps所以没做varnish缓存,感觉意义不大,只开启了eAccelerator加速和nginx缓存。
回复

使用道具 举报

xooass 发表于 2013-7-30 10:23:58 | 显示全部楼层
每个能加速的优化都值得尝试
回复

使用道具 举报

crx349 发表于 2013-8-10 22:16:19 | 显示全部楼层
不错的方案 谢谢分享
回复

使用道具 举报

crx349 发表于 2013-9-4 16:47:38 | 显示全部楼层
配置文件直接执行错误哦~
回复

使用道具 举报

wxjback 发表于 2013-10-15 14:23:27 | 显示全部楼层
现在只用了apc

云主机上安装了amh 模块里有 amproxy 反代,不知道他们用的是哪个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 12:40 , Processed in 0.031120 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表