WordPress的varnish内存缓存方案
生活随笔
收集整理的這篇文章主要介紹了
WordPress的varnish内存缓存方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
安裝varnish
varnish官方下載地址
[root@VM-0-17-centos ~]# yum -y install varnish # 下載 [root@VM-0-17-centos ~]# systemctl start varnish [root@VM-0-17-centos ~]# systemctl enable varnish Created symlink from /etc/systemd/system/multi-user.target.wants/varnish.service to /usr/lib/systemd/system/varnish.service.# 配置varnish [root@VM-0-17-centos ~]# vim /etc/varnish/default.vcl vcl 4.0; import std;backend default {.host = "127.0.0.1";.port = "80"; }acl purger { "localhost"; "106.54.95.242"; }sub vcl_recv {if (client.ip != "127.0.0.1" && std.port(server.ip) == 80 && req.http.host ~ "^(?i)tianatian.icu") {set req.http.x-redir = "https://" + req.http.host + req.url;return(synth(850, "Moved permanently"));}if (req.method == "PURGE") {if (!client.ip ~ purger) {return(synth(405, "This IP is not allowed to send PURGE requests."));}return (purge);}if (req.restarts == 0) {if (req.http.X-Forwarded-For) {set req.http.X-Forwarded-For = client.ip;}}if (req.http.Authorization || req.method == "POST") {return (pass);}if (req.url ~ "/feed") {return (pass);}if (req.url ~ "wp-admin|wp-login") {return (pass);}set req.http.cookie = regsuball(req.http.cookie, "wp-settings-\d+=[^;]+(; )?", "");set req.http.cookie = regsuball(req.http.cookie, "wp-settings-time-\d+=[^;]+(; )?", "");if (req.http.cookie == "") {unset req.http.cookie;} }sub vcl_synth {if (resp.status == 850) { set resp.http.Location = req.http.x-redir; set resp.status = 302;return (deliver);} }sub vcl_purge {set req.method = "GET";set req.http.X-Purger = "Purged";return (restart); }sub vcl_backend_response {set beresp.ttl = 24h;set beresp.grace = 1h;if (bereq.url !~ "wp-admin|wp-login|product|cart|checkout|my-account|/?remove_item=") {unset beresp.http.set-cookie;} }sub vcl_deliver { if (req.http.X-Purger) { set resp.http.X-Purger = req.http.X-Purger;} }[root@VM-0-17-centos ~]# systemctl restart varnish # 重啟varnish服務 [root@VM-0-17-centos ~]# ss -nutlp | grep 6081 tcp LISTEN 0 128 *:6081 *:* users:(("varnishd",pid=30299,fd=6)) tcp LISTEN 0 128 [::]:6081 [::]:* users:(("varnishd",pid=30299,fd=7))瀏覽器訪問查看
配置文件詳解
vcl 4.0; # 聲明版本號 import std; # 引入std模塊backend default { .host = "127.0.0.1";.port = "80"; } # 該塊配置用于定義一臺Varnish默認訪問的后端服務器,當Varnish需要從后端服務器獲取數據時,就會訪問自己的80端口。當然Varnish也可以定義多臺后端服務器實現負載均衡的目的。.connect_timeout定義的是等待連接后端的時間,.first_byte_timeout定義的是等待從backend傳輸過來的第一個字節的時間,.between_bytes_timeout 定義的是兩個字節的間隔時間,當然還可以增加一個backend,用于訪問本機的8090端口,假設通過該端口提供圖片服務acl purger { # 允許清理緩存的主機 "localhost"; "106.54.95.242"; # 本機ip }# vcl_recv模塊:用于接收和處理請求。當請求成功被調用后,Varnish通過判斷請求的數據來決定如何處理請求。此模塊一般以如下幾個關鍵字結束。pass:表示進入pass模式,把請求交給vcl_pass模塊處理。pipe:表示進入pipe模式,把請求交給vcl_pipe模塊處理。error code [reason]:表示把錯誤標識返回給客戶端,并放棄處理該請求。錯誤標識包括200、405等。"reason"是對錯誤的提示信息。 sub vcl_recv { if (client.ip != "127.0.0.1" && std.port(server.ip) == 80 && req.http.host ~ "^(?i)tianatian.icu") {set req.http.x-redir = "https://" + req.http.host + req.url;return(synth(850, "Moved permanently"));}if (req.method == "PURGE") { # 定義刪除緩存的方法if (!client.ip ~ purger) {return(synth(405, "This IP is not allowed to send PURGE requests."));}return (purge);}if (req.restarts == 0) {if (req.http.X-Forwarded-For) { # 為發往后端主機的請求添加X-Forward-For首部set req.http.X-Forwarded-For = client.ip;}}if (req.http.Authorization || req.method == "POST") {return (pass);}if (req.url ~ "/feed") {return (pass);}if (req.url ~ "wp-admin|wp-login") {return (pass);}set req.http.cookie = regsuball(req.http.cookie, "wp-settings-\d+=[^;]+(; )?", "");set req.http.cookie = regsuball(req.http.cookie, "wp-settings-time-\d+=[^;]+(; )?", "");if (req.http.cookie == "") {unset req.http.cookie;} }sub vcl_synth {if (resp.status == 850) { set resp.http.Location = req.http.x-redir; set resp.status = 302;return (deliver);} }sub vcl_purge {set req.method = "GET";set req.http.X-Purger = "Purged";return (restart); }sub vcl_backend_response { # 定義緩存文件的緩存時長,即TTL值set beresp.ttl = 24h;set beresp.grace = 1h;if (bereq.url !~ "wp-admin|wp-login|product|cart|checkout|my-account|/?remove_item=") { # 定義帶Set-Cookie首部的后端響應不緩存,直接返回給客戶端unset beresp.http.set-cookie;} }sub vcl_deliver { # 定義deliver 引擎 if (req.http.X-Purger) { set resp.http.X-Purger = req.http.X-Purger;} }總結
以上是生活随笔為你收集整理的WordPress的varnish内存缓存方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建WordPress个人网站
- 下一篇: 安装zabbix4.0+grafana