Varnish基礎配置實現動靜分離web網站

來源:互聯網
上載者:User

標籤:apache   nginx   varnish   httpd   php.wordpress   

由於一個web網站的程式的訪問具有局部性特徵:時間上的局部性:一個資料被訪問過之後,可能很快會被再次訪問到;空間局部性:一個資料被訪問時,其周邊的資料也有可能被訪問到;varnish可將這部分資料緩衝下來.
緩衝的資料存在被訪問較頻繁的資料可以稱其為熱區:緩衝同樣存在局部性;時效性:如果緩衝空間耗盡:則採用LRU,最近最少使用演算法;將到期的緩衝清理掉

varnish的基本工作原理:

Varnish通過類似於HTPP反向 Proxy的方式將可以用來緩衝的資料緩衝下來直接響應給用戶端的快取資料,如果緩衝中
沒有相應的資料,它將會把請求指向後端機器,擷取響應的資料進行響應用戶端。
當varnish有緩衝的時候響應通常只需要極短的時間,比直接存取後端機器通常要快幾個量級,所以要儘可能的將可快取的頁面緩衝到varnish中。


varnish工作模式圖:

   650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/9A/A3/wKiom1lY4Prj5ZoeAABT40sH6oY379.png" title="捕獲.PNG" alt="wKiom1lY4Prj5ZoeAABT40sH6oY379.png" />

varnish的處理機製圖:

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/9A/A3/wKiom1lY4UPCRsMWAAYYShK1BV8578.jpg-wh_500x0-wm_3-wmp_4-s_3429070054.jpg" title="30212356_146129273143JH.jpg" alt="wKiom1lY4UPCRsMWAAYYShK1BV8578.jpg-wh_50" />

哪些資料可以緩衝或是不可緩衝:1.盡量將網站公用的資料緩衝下來;2.用排除使用者的私人資料.

配置一個wordperss網站使用varnish快取服務器並做動靜分離

基礎拓撲圖:

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/9A/A3/wKioL1lY4WeBqB0LAAB1ycfFd5o851.png" title="varnish基礎.PNG" alt="wKioL1lY4WeBqB0LAAB1ycfFd5o851.png" />

varnish的配置(基於cenots7,整個配置過程應避免iptables和selinux的影響):
ntpdata 172.16.0.1  同步時間

安裝varnish程式:

yum install varnish

編輯varnish的主設定檔:

vim /etc/varnish/varnish.params    添加最後一行:    DAEMON_OPTS="-p thread_pools=3 -p thread_pool_min=5 -p thread_pool_max=1000 -p thread_pool_timeout=300"

啟動varnish程式:

systemctl restart varnish

編輯varnish的vcl設定檔:

vim /etc/varnish/default.vcl

作出如下基礎配置:

vcl 4.0;# Default backend definition. Set this to point to your content server.backend default {      #定義後端動態主機(apm)    .host = "192.168.5.109";     .port = "80";}backend nginxsrvs {    #定義後端靜態主機(nignx)  .host = "192.168.5.108";   .port = "80";}sub vcl_recv {    # Happens before we check if we have this in cache already.    #    # Typically you clean up the request here, removing cookies you don‘t need,    # rewriting the request, etc.    if (req.method == "PURGE") {       #指明何時可以用PURGE請求裁剪快取資料         return(purge);}    if (req.url ~ "(?i)^/(login|admin)") {   #指定一些私用資料不尋找快取資料                                        return(pass);                                }    if (req.url ~ "(?i)\.(html|htm|css|svg|js|jpg|jpeg|png|gif|pdf)") { #指定的內容由靜態伺服器響應,其他的為動態伺服器響應         set req.backend_hint = nginxsrvs;   #指明響應的後端主機    } else {         set req.backend_hint =   default;   #指明響應的前端主機    }}sub vcl_purge {        return (synth(200,"Purged"));   #指明可以執行的PURGE操作}sub vcl_deliver {                                                     if (obj.hits>0) {       #可以用來做緩衝是否被命中,obj.hits用於統計快取命中的次數                                       set resp.http.X-Cache = "HIT via " + server.ip;               } else {                                                              set resp.http.X-Cache = "Miss via " + server.ip;          }

將default.vcl檔案編譯載入至varnish程式:

varnishadm -S secret     進入varnish配置的cli介面,執行編譯載入:     vcl.load test1 default.vcl   #編譯     vcl.use test1                 #載入     quit                          #退出
配置apm動態伺服器:
yum install httpdmkdir -p /apps/data (需要考慮許可權)

將wordpress的源碼檔案cp至目錄下

編輯httpd的網站設定檔

vim /etc/httpd/conf.d/wordpress.conf

<VirtualHost *:80>    DirectoryIndex index.php index.html    ServerName www.abc.com    DocumentRoot /apps/data/wordpress    <Directory "/apps/data/">            Options FollowSymLinks            AllowOverride None            Require all granted    </Directory></VirtualHost>

啟動httpd程式:

systemctl  restart httpd
配置nfs服務用於共用網站檔案
yum install nfs-utilsvim /etc/exports/apps/data *(rw,all_squash,anonuid=48)
配置nginx靜態伺服器:
yum install nginx   #這裡要用到nginx官方提供的yum源

配置/etc/nginx/conf.d/default.conf檔案,作出如下修改

vim /etc/nginx/conf.d/default.conflocation / {    root   /apps/data/wordpress;   #指明web程式的路徑    index  index.html index.htm;}

啟動nginx服務程式

systemctl restart nginx

更改hosts檔案即可做訪問測試.

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/9A/A3/wKiom1lY4xDBVUKOAAYFqcw1XUI122.png-wh_500x0-wm_3-wmp_4-s_3694132590.png" title="abc.PNG" alt="wKiom1lY4xDBVUKOAAYFqcw1XUI122.png-wh_50" />
varnish的基礎配置實現已完成.


本文出自 “老城小敘” 部落格,請務必保留此出處http://cityx.blog.51cto.com/9857477/1943841

Varnish基礎配置實現動靜分離web網站

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.