国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

利用varnish做Discuz論壇的緩存服務器

2024-06-28 13:19:10
字體:
來源:轉載
供稿:網友
利用varnish做Discuz論壇的緩存服務器

實驗背景:公司有一臺BBS服務器,用的是LNMP的架構搭建的。正好手頭有一臺空閑的虛擬機,于是想著給BBS前端加一臺緩存服務器。于是選定了varnish,搜了很多教程,跌跌撞撞的完成了配置。這其中很多配置的作用我也不是十分了解,這里先給出大體的配置,之后有時間會研究一下其中配置的原理和具體作用。

實驗系統:CentOS 6.4_x86_64

實驗前提:防火墻和selinux都關閉

實驗說明:本實驗共有2臺主機,ip分配如拓撲

實驗軟件:varnish-3.0.7-1  varnish-libs-3.0.7-1

下載地址:http://pan.baidu.com/s/1hq8hgoO

實驗拓撲:

        

一、安裝并配置varnish

  1.在70.186上直接使用yum安裝:

yum -y install varnish-3.0.7-1.el6.x86_64.rpm varnish-libs-3.0.7-1.el6.x86_64.rpm

  2.編輯/etc/sysconfig/varnish文件:

vim /etc/sysconfig/varnish------------------------------------------------>## Alternative 3, Advanced configurationVARNISH_VCL_CONF=/etc/varnish/default.vcl                                      //使用的vcl文件VARNISH_LISTEN_PORT=80                                                         //varnish自己監聽的端口VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1                                        //admin管理接口使用的ipVARNISH_ADMIN_LISTEN_PORT=6082                                                //admin管理接口使用的端口VARNISH_SECRET_FILE=/etc/varnish/secret                                       //密碼文件VARNISH_MIN_THREADS=50                                                        //最小進程數VARNISH_MAX_THREADS=1000                                                      //最大進程數VARNISH_THREAD_TIMEOUT=120                                                    //超過此時間回收空閑進程VARNISH_STORAGE_SIZE=1G                                                      //存儲文件大小VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"                             //指明使用存儲的類型及文件VARNISH_TTL=120DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} /             -f ${VARNISH_VCL_CONF} /             -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} /             -t ${VARNISH_TTL} /             -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} /             -u varnish -g varnish /             -S ${VARNISH_SECRET_FILE} /             -s ${VARNISH_STORAGE}"

  3.編輯vcl文件:

vim /etc/varnish/default.vcl--------------------------------------------------------->backend default {  .host = "192.168.90.186";  .port = "80";}acl local { "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 == "PURGE") {       if (!client.ip ~ local) {         error 405 "Not Allowed.";       }       return (lookup);     }      if (req.request == "GET" && req.url ~ "/.(jpg|png|gif|swf|jpeg|flv|bmp|gz|tgz|bz2|tbz|js|CSS|ico)$") {       unset req.http.cookie;     }     if (req.request == "GET" && req.url ~ "/.(js|css).*$") {       unset req.http.cookie;     }     if (req.url ~ "^/images") {       unset req.http.cookie;     }       if (req.request != "GET" &&       req.request != "HEAD" &&       req.request != "PUT" &&       req.request != "POST" &&       req.request != "TRACE" &&       req.request != "OPTIONS" &&       req.request != "DELETE") {         return (pipe);     }     if (req.request != "GET" && req.request != "HEAD") {         return (pass);     }     if (req.http.Authorization || req.http.Cookie) {         return (pass);     }     if (req.request == "GET" && req.url ~ "/.(php)($|/?)") {         return (pass);     }     return (lookup); } sub vcl_pipe {     return (pipe); } sub vcl_pass {     if (req.request == "PURGE") {    error 502 "PURGE on a passed object";     }     return (pass); } sub vcl_hash {     hash_data(req.url);     if (req.http.host) {         hash_data(req.http.host);     } else {         hash_data(server.ip);     }     return (hash); } sub vcl_hit {     if (!obj.ttl > 0s) {       return (pass);     }     if (req.request == "PURGE") {         purge;         error 200 "Purged.";     }     return (deliver); } sub vcl_miss {     if (req.request == "PURGE") {    purge;    error 404 "Not in cache";     }     return (fetch); } sub vcl_fetch {     if (beresp.ttl <= 0s ||         beresp.http.Set-Cookie ||         beresp.http.Vary == "*") {          set beresp.ttl = 120 s;          return (hit_for_pass);     }      if (beresp.http.PRagma ~ "no-cache" ||          beresp.http.Cache-Control ~ "no-cache" ||          beresp.http.Cache-Control ~ "private") {          return (hit_for_pass);      }      if (req.request == "GET" && req.url ~ "/.(bmp|jpeg|jpg|png|gif|svg|png|ico|txt|css|js|html|htm)$") {          unset beresp.http.set-cookie;          set beresp.ttl = 1h;      } else {          set beresp.ttl = 1800s;      }     return (deliver); } sub vcl_deliver {     if (obj.hits > 0) {    set resp.http.X-Cache = "Hit Via" + " " + server.hostname;     } else {        set resp.http.X-Cache = "Miss Via" + " " + server.hostname;     }     return (deliver); } sub vcl_init {     return (ok); } sub vcl_fini {     return (ok); }

  4.啟動varnish,查看端口,并打開瀏覽器測試:

service varnish startss -tnl

    

二、訪問測試:

  1.瀏覽器打開http://192.168.70.186,并隨機訪問一些內容:

    

  2.varnish狀態查看:

varnishstat

    

  3.圖表查看:

varnishhist

    

  4.前端客戶端用瀏覽器的F12功能查看緩存是否命中,這里用Chrome演示:

    

  至此,緩存服務器搭建完畢,這其中還會有些問題,今天先粗淺的演示一下,謝謝大家!QQ:82800452


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇阳县| 从江县| 三门县| 凤庆县| 光泽县| 游戏| 昌黎县| 黄石市| 蚌埠市| 北宁市| 广南县| 黔西| 邮箱| 临潭县| 汕尾市| 集安市| 安乡县| 金沙县| 贡山| 都兰县| 措美县| 黎平县| 庆云县| 青田县| 四平市| 宁强县| 武冈市| 新巴尔虎右旗| 金乡县| 洮南市| 巴南区| 崇信县| 武夷山市| 肃宁县| 淄博市| 镇平县| 无锡市| 普洱| 卫辉市| 蛟河市| 皋兰县|