安装varish作为缓存和代理
生活随笔
收集整理的這篇文章主要介紹了
安装varish作为缓存和代理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1,Varish的使用有兩種模式:
第1種? Nginx(負載)+varish(緩存)+WEB
第2種??Varish(緩存和負載)+web
?
2,varish是以內(nèi)存作為共享容器的:
內(nèi)存的大小決定了它的緩存容量。相對于主要以硬盤為存儲的squid來說要高效的多。它適合一些經(jīng)常查詢且變化不大的靜態(tài)內(nèi)容緩存。
????
???? Nginx? 圖片和靜態(tài)文本給 varish 后端是WEB的8080端口
??????????? 動態(tài)內(nèi)容給后端WEB? 后端是WEB的8080端口
???? 這個架構(gòu)要看服務(wù)器和存儲內(nèi)容,如果nginx不用做反向代理以支持后臺諸多應(yīng)用的話,那么單就nginx來說,利用proxy_cache模塊也可以支持本地緩存。它緩存在硬盤上,性能和squid相差不大,但是穩(wěn)定性和易用性要好的多。
?
3,安裝varish:
??? 1)創(chuàng)建用戶和組,賦予權(quán)限 # groupadd www
# useradd -g www www
# mkdir -p /var/vcache
# chown -R www:www /var/vcache
???
?2)創(chuàng)建varnish日志目錄并授權(quán) # mkdir -p /var/log/varnish
# chmod +w /var/log/varnish
# chown -R www:www /var/log/varnish
???
?3)編譯安裝varnish
# tar zxvf varnish-1.1.2.tar.gz
# cd varnish-1.1.2
# ./configure --prefix=/usr/local/varnish
# make && make install
???
?4)創(chuàng)建并修改配置文件vi /usr/local/varnish/vcl/conf
?
backend default {?????????????????????????? #通過反向代理請求后端IP為192.168.0.5,80端口的WEB服務(wù)器,可以是本機,也可以是后臺????????????????? .host = "192.168.0.151";
????????????????? .port = "81";
}
?
acl purge {????????????????????????????????????? #允許這三個來源的IP通過PURGE方法清除緩存?????? "localhost";
?????? "127.0.0.1";
?????? "192.168.1.0"/24;
}
?
sub vcl_recv {
?????? if (req.request == "PURGE") {
?????????????? if (!client.ip ~ purge) {
?????????????????????? error 405 "Not allowed.";??? #405錯誤顯示?????????????? }
????????????? return(lookup);
?????? }
?
?????? if (req.http.host ~ "^blog.s135.com") {
?????????????? set req.backend = default;
?????????????? if (req.request != "GET" && req.request != "HEAD") {
??????????????? return(pipe);
?????????????? }
?????????????? else {
??????????????? return (lookup);
?????????????? }
?????? }
?????? else {
?????????????? error 404 "Not in cache"; #404錯誤顯示?????????????? return(lookup);
?????? }
}
?
sub vcl_hit {
?????? if (req.request == "PURGE") {
?????????????? set obj.ttl = 0s;
?????????????? error 200 "Purged.";
?????? }
}
?
sub vcl_miss {
?????? if (req.request == "PURGE") {
?????????????? error 404 "Not in cache.";
?????? }
}
?
sub vcl_fetch {????????????????????????????????????????????
?????? if (req.request == "GET" && req.url ~ "/.(txt|js)$") {
????????????? set obj.ttl = 3600s;???????????????????????? #對于txt和js緩存一個小時?????? }
?????? else {
?????????????? set obj.ttl = 30d;???????????????????? #其余的緩存一天?????? }
}
Varnish對HTTP協(xié)議中的GET、HEAD請求進行緩存,對POST請求透過,讓其直接訪問后端Web服務(wù)器。之所以這樣配置,是因為POST請求一般是發(fā)送數(shù)據(jù)給服務(wù)器的,需要服務(wù)器接收、處理,所以不緩存;
?? 5)啟動ulimit -SHn 51200?
/usr/local/varnish/sbin/varnishd -a :80 -b 192.168.0.151:81 -p thread_pool_max=1500 -p thread_pools=5 -p listen_depth=512? -w 1,10000,120
6)將訪問日志寫入訪問文件/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/log/varnish/varnish.log &
?
7)查看狀態(tài) 8)測試 我們用varish監(jiān)聽80端口,同時將數(shù)據(jù)來源轉(zhuǎn)向到監(jiān)聽81端口的Apache
訪問主頁
第1種? Nginx(負載)+varish(緩存)+WEB
第2種??Varish(緩存和負載)+web
?
2,varish是以內(nèi)存作為共享容器的:
內(nèi)存的大小決定了它的緩存容量。相對于主要以硬盤為存儲的squid來說要高效的多。它適合一些經(jīng)常查詢且變化不大的靜態(tài)內(nèi)容緩存。
????
???? Nginx? 圖片和靜態(tài)文本給 varish 后端是WEB的8080端口
??????????? 動態(tài)內(nèi)容給后端WEB? 后端是WEB的8080端口
???? 這個架構(gòu)要看服務(wù)器和存儲內(nèi)容,如果nginx不用做反向代理以支持后臺諸多應(yīng)用的話,那么單就nginx來說,利用proxy_cache模塊也可以支持本地緩存。它緩存在硬盤上,性能和squid相差不大,但是穩(wěn)定性和易用性要好的多。
?
3,安裝varish:
??? 1)創(chuàng)建用戶和組,賦予權(quán)限 # groupadd www
# useradd -g www www
# mkdir -p /var/vcache
# chown -R www:www /var/vcache
???
?2)創(chuàng)建varnish日志目錄并授權(quán) # mkdir -p /var/log/varnish
# chmod +w /var/log/varnish
# chown -R www:www /var/log/varnish
???
?3)編譯安裝varnish
# tar zxvf varnish-1.1.2.tar.gz
# cd varnish-1.1.2
# ./configure --prefix=/usr/local/varnish
# make && make install
???
?4)創(chuàng)建并修改配置文件vi /usr/local/varnish/vcl/conf
?
backend default {?????????????????????????? #通過反向代理請求后端IP為192.168.0.5,80端口的WEB服務(wù)器,可以是本機,也可以是后臺????????????????? .host = "192.168.0.151";
????????????????? .port = "81";
}
?
acl purge {????????????????????????????????????? #允許這三個來源的IP通過PURGE方法清除緩存?????? "localhost";
?????? "127.0.0.1";
?????? "192.168.1.0"/24;
}
?
sub vcl_recv {
?????? if (req.request == "PURGE") {
?????????????? if (!client.ip ~ purge) {
?????????????????????? error 405 "Not allowed.";??? #405錯誤顯示?????????????? }
????????????? return(lookup);
?????? }
?
?????? if (req.http.host ~ "^blog.s135.com") {
?????????????? set req.backend = default;
?????????????? if (req.request != "GET" && req.request != "HEAD") {
??????????????? return(pipe);
?????????????? }
?????????????? else {
??????????????? return (lookup);
?????????????? }
?????? }
?????? else {
?????????????? error 404 "Not in cache"; #404錯誤顯示?????????????? return(lookup);
?????? }
}
?
sub vcl_hit {
?????? if (req.request == "PURGE") {
?????????????? set obj.ttl = 0s;
?????????????? error 200 "Purged.";
?????? }
}
?
sub vcl_miss {
?????? if (req.request == "PURGE") {
?????????????? error 404 "Not in cache.";
?????? }
}
?
sub vcl_fetch {????????????????????????????????????????????
?????? if (req.request == "GET" && req.url ~ "/.(txt|js)$") {
????????????? set obj.ttl = 3600s;???????????????????????? #對于txt和js緩存一個小時?????? }
?????? else {
?????????????? set obj.ttl = 30d;???????????????????? #其余的緩存一天?????? }
}
Varnish對HTTP協(xié)議中的GET、HEAD請求進行緩存,對POST請求透過,讓其直接訪問后端Web服務(wù)器。之所以這樣配置,是因為POST請求一般是發(fā)送數(shù)據(jù)給服務(wù)器的,需要服務(wù)器接收、處理,所以不緩存;
?? 5)啟動ulimit -SHn 51200?
/usr/local/varnish/sbin/varnishd -a :80 -b 192.168.0.151:81 -p thread_pool_max=1500 -p thread_pools=5 -p listen_depth=512? -w 1,10000,120
6)將訪問日志寫入訪問文件/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/log/varnish/varnish.log &
?
7)查看狀態(tài) 8)測試 我們用varish監(jiān)聽80端口,同時將數(shù)據(jù)來源轉(zhuǎn)向到監(jiān)聽81端口的Apache
訪問主頁
總結(jié)
以上是生活随笔為你收集整理的安装varish作为缓存和代理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下DNS轮询与Squid反向代
- 下一篇: BOOS穆图打法(平民版)