<progress id="btth9"></progress>
<sub id="btth9"><thead id="btth9"><font id="btth9"></font></thead></sub>

<sub id="btth9"></sub>

      <big id="btth9"></big>

      <progress id="btth9"></progress>

      <big id="btth9"></big>

      win7系統下載
      當前位置: 首頁 > 網絡技術教程 > 詳細頁面

      Varnish設置筆記記錄

      發布時間:2022-07-23 文章來源:xp下載站 瀏覽:

      網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。

        Varnish是一個開源的反向代理軟件和HTTP加速器,與傳統的Squid相比,Varnish具有性能更高、速度更快、管理更方便等諸多優點,很多大型的運營網站都開始嘗試用Varnish來替換Squid,這些都促使Varnish迅速發展起來。

        1、準備工作及下載源碼包

        yum install -y automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig

        wget

        2、安裝

        tar zxf varnish-3.0.3.tar.gz

        cd varnish-3.0.3

        ./autogen.sh

        ./configure --prefix=http://www.3lian.com/usr/local/varnish

        make && make install

        3、添加Varnishd進程用戶www,用戶組www,創建/var/vcache目錄,使www用戶有權限可讀寫

        groupadd www

        useradd www -g www

        mkdir /home/vcache

        chown -R www:www /home/vcache

        chmod -R 750 /home/vcache

        4、編輯/etc/sysctl.conf 優化幾個內核參數

        net.ipv4.tcp_fin_timeout = 30

        net.ipv4.tcp_keepalive_time = 300

        net.ipv4.tcp_syncookies = 1

        net.ipv4.tcp_tw_reuse = 1

        net.ipv4.tcp_tw_recycle = 1

        net.ipv4.ip_local_port_range = 5000 65000

        運行sysctl -p 重新按配置文件設置內核參數

        5、啟動Varnishd

        /usr/local/varnish/sbin/varnishd -u www -g www -f /usr/local/varnish/etc/varnish/varnish.conf -a 0.0.0.0:80 -s file,/home/vcache/varnish_cache.data,100M -w 1024,8192,10 -t 3600 -T 127.0.0.1:3500

        參數說明:

        -u 以什么用運行

        -g 以什么組運行

        -f varnish配置文件

        -a 綁定IP和端口

        -s varnish緩存文件位置與大小

        -w 最小,最大線程和超時時間

        -T varnish管理端口,主要用來清除緩存

        -p client_http11=on 支持http1.1協議

        -P(大P) /usr/local/varnish/var/varnish.pid 指定其進程碼文件的位置,實現管理

        6、啟動varnishncsa用來將Varnish訪問日志寫入日志文件:

        /usr/local/varnish/bin/varnishncsa -n /home/vcache -w /var/log/varnish.log &

        7、Varnish 緩存清除

        /usr/local/varnish/bin/varnishadm -T 192.168.1.180:3500 purge "req.http.host ~ $ && req.url ~ /static/image/tp.php"

        說明:

        192.168.1.180:3000 為被清除緩存服務器地址

         為被清除的域名

        /static/image/tp.php 為被清除的url地址列表

        清除所有緩存

        /usr/local/varnish/bin/varnishadm -T 192.168.1.180:3500 url.purge *$

        清除image目錄下所有緩存

        /usr/local/varnish/bin/varnishadm -T 192.168.1.180:3500 url.purge /image/

        8、將加入啟動項

        vi /etc/rc.local

        ulimit -SHn 51200

        /usr/local/varnish/sbin/varnishd -u www -g www -f /usr/local/varnish/etc/varnish/varnish.conf -a 0.0.0.0:80 -s file,/home/vcache/varnish_cache.data,100M -w 1024,8192,10 -t 3600 -T 127.0.0.1:3500

        /usr/local/varnish/bin/varnishncsa -n /home/vcache -w /var/log/varnish.log &

        9、殺掉varnishd進程

        pkill varnishd

        10、查看varnishd命中率

        /usr/local/varnish/bin/varnishstat

        11、更新系統時間

        yum install -y ntp

        ntpdate time.nist.gov

        echo "00 01 * * * ntpdate time.nist.gov" 》 /etc/crontab

        附件多主機多域名varnish.conf 配置

        backend blog {

        .host = "198.56.193.190";

        .port = "80";

        }

        backend www {

        .host = "192.168.1.170";

        .port = "80";

        }

        sub vcl_recv {

        if (req.http.host ~ "^()?5013.org$") {

        set req.backend = blog;

        } elsif (req.http.host ~ "^()?(test1.com|test2.com)$") {

        set req.backend = www;

        } else {

        error 404 "Unknown virtual host";

        }

        }

        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") {

        /* Non-RFC2616 or CONNECT which is weird. */

        return (pipe);

        }

      #只有GET與HEAD方法才會使用Lookup,使用緩存。
          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);
          # }
          #如果請求的是php頁面直接轉發到后端服務器
          if (req.url ~ ".(php|cgi)($|?)") {
          return (pass);
          }
          return (lookup);
          }
          sub vcl_pipe {
          return (pipe);
          }
          sub vcl_pass {
          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 {
          return (deliver);
          }
          sub vcl_miss {
          return (fetch);
          }
          sub vcl_fetch {
          if (beresp.ttl <= 0s ||
          beresp.http.Set-Cookie ||
          beresp.http.Vary == "*") {
          /*
          * Mark as "Hit-For-Pass" for the next 2 minutes
          */
          set beresp.ttl = 120 s;
          return (hit_for_pass);
          }
          if (req.url ~ ".(png|gif|jpg)$") {
          unset beresp.http.set-cookie;
          set beresp.ttl = 1h;
          }
          #設置圖片的緩存TTL為一小時
          return (deliver);
          }
          sub vcl_deliver {
          return (deliver);
          }
          sub vcl_error {
          set obj.http.Content-Type = "text/html; charset=utf-8";
          set obj.http.Retry-After = "5";
          synthetic {"
          <?xml version="1.0" encoding="utf-8"?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
          "">
          <html>
          <head>
          <title>"} + obj.status + " " + obj.response + {"</title>
          </head>
          <body>
          <h1>Error "} + obj.status + " " + obj.response + {"</h1>
          <p>"} + obj.response + {"</p>
          <h3>Guru Meditation:</h3>
          <p>XID: "} + req.xid + {"</p>
          <hr>
          <p>Varnish cache server</p>
          </body>
          </html>
          "};
          return (deliver);
          }
          sub vcl_init {
          return (ok);
          }
          sub vcl_fini {
          return (ok);
          }


      網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。

      本文章關鍵詞: Varnish 配置 筆記 記錄 
      日本不卡免费新一区二区三区