张戈博客分享过很多关于缓存加速的教程,自己也是不断的在摸索,追求最佳的网站静态缓存加速方案。在这里简单的总结一下:
1、使用虚拟主机的朋友推荐使用缓存插件或 php 代码版缓存方案=>点此直达
2、使用独立主机的朋友推荐使用 Nginx 的 Fastcgi 纯静态缓存方案=>点此直达
在我分享了 Nginx 的 Fastcgi 缓存之后,有不少朋友已折腾成功。不过有朋友反馈,不知道在多站点下如何配置 Nginx Fastcgi。而所有网上分享的方案都是单个站点的,我本以为多站点的直接在 php 的 location 模块中插入 fastcgi 缓存配置就好了,结果发现会报错,提示缓存空间已被使用。
经过张戈轮番测试,最终试出了多站点下的 Fastcgi 缓存配置,下面简单分享下。
一、部署 http 模块
①、单个站点
单个站点上篇文章已经分享过了,在 http 模块内加入如下配置即可:
fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:150m inactive=31d max_size=10G; fastcgi_temp_path /tmp/wpcache/temp; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
②、多个站点
当要给多个站点开启 fastcgi 缓存时,以上配置就不行了,会报错。经过测试,修改如下即可:
#站点 1 缓存配置 fastcgi_cache_path /tmp/zhangge_cache levels=1:2 keys_zone=zhang.ge:384m inactive=1d max_size=5G; #站点 2 缓存配置 #如果要开启更多站点缓存,请继续增加,注意每个站点的 缓存路径 和 keys_zone 要自定义区分一下 #Ps:代码中的参数都只是范例,实际使用请根据服务器配置自行修改 fastcgi_cache_path /tmp/zgboke_cache levels=1:2 keys_zone=zgboke.com:384m inactive=1d max_size=5G; #其他配置可以不变 fastcgi_temp_path /tmp/temp_cache; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500;
二、部署 server 模块
配置好了 http 模块之后,server 模块就很简单了!
只要在不同的站点的 php 模块下插入不同的 fastcgi 缓存配置即可,其实就是 key_zone 的区别而已。
比如,我同时给张戈博客和中国博客联盟 2 个站点的配置如下:
张戈博客:
server( #其他配置略 location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; #fastcgi 缓存配置 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; add_header X-Cache "$upstream_cache_status From $host"; fastcgi_cache zhang.ge; fastcgi_cache_valid 200 301 302 1d; } #其他配置略 }
中国博客联盟:
server( #以上配置略 location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; #fastcgi 缓存配置 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; add_header X-Cache "$upstream_cache_status From $host"; fastcgi_cache zgboke.com; fastcgi_cache_valid 200 301 302 1d; } #以下配置略 }
其实就是和 http 模块内定义的缓存一 一对应而已,这样才能区分开来啊!否则就会报错。
三、Proxy_cache 缓存
分享了多站点的 fastcgi 缓存配置,顺带也分享一下 Proxy_cache 的多站点缓存配置好了。免得某些朋友不会依葫芦画瓢。。。
其实,我也没实际测试,但是依此类推应该如下配置即可,有需求的测试一番就知道了:
①、http 模块
proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; #同样的有几个站点就配几条 proxy_cache_path,注意缓存路径和 keys_zone 需要自定义区分 #Ps:代码中的参数只是范例,实际使用请根据服务器配置自行修改 proxy_cache_path /tmp/web1_cache levels=1:2 keys_zone=web1_cache:256m inactive=31d max_size=2g; proxy_cache_path /tmp/web2_cache levels=1:2 keys_zone=web2_cache:256m inactive=31d max_size=2g; proxy_temp_path /tmp/temp_cache;
②、server 模块
至于 server 模块应该就不用跟上面介绍的那样详细了吧!不同站点只是 proxy_cache 这个配置不一样而已!比如:
站点 1 配置
#其他配置略 proxy_cache web1_cache; #填写站点对应的 keys_zone 即可 proxy_cache_valid 200 302 304 301 1d; proxy_cache_valid any 1m;
站点 2 配置:
#其他配置略 proxy_cache web2_cache; #填写站点对应的 keys_zone 即可 proxy_cache_valid 200 302 304 301 1d; proxy_cache_valid any 1m;
Ps:可能有人又要问了,这配置是放到哪的啊?唉,就这样您还瞎折腾啥呢?老老实实写文章吧!
哦了,看懂以上配置,随便部署多少站点的 fastcgi 或 proxy 缓存都不用愁了!
看不懂,不过还是先抢个沙发再说
老大,你网站的图片水印是用的哪个插件?看你博客的第一张图片并没有水印。
大侠的:dx-watermark
这个好,马上可以用上了, 但是多站点要清理缓存有办法没
只能手动删除吗
缓存存放在不同的路径,和单个的清理没啥区别。
网站还是那样出众
欢迎大侠对我的站提点意见哦
wp-config.php里的那个路径也要改对吧?
是的,回头我更新下。
不错,收藏了先!
多谢分享啊
请教 #站点1缓存配置
fastcgi_cache_path /tmp/zhangge_cache levels=1:2 keys_zone=zhang.ge:384m inactive=1d max_size=5G;
#站点2缓存配置
#如果要开启更多站点缓存,请继续增加,注意每个站点的 缓存路径 和 keys_zone 要自定义区分一下
#Ps:代码中的参数都只是范例,实际使用请根据服务器配置自行修改
fastcgi_cache_path /tmp/zgboke_cache levels=1:2 keys_zone=zgboke.com:384m inactive=1d max_size=5G;
这段是不是加在nginx.conf里的http下面,我加上去nginx启动不了。。。单站点没问题 key_zone指定的也正确。。。确定不是我vhost的service段配置,因为我删除单个站点的conf配置也启动不了nginx,求教谢谢。
看启动报错信息就知道了
Jager大大,我按照教程给其他站点添加 提示Starting nginx: nginx: [emerg] "fastcgi_cache_key" directive is duplicate in /usr/local/nginx/conf/vhost/www.test.com.conf:2 指令重复, 这个:fastcgi_cache_key "$scheme$request_method$host$request_uri";
是不是可以把重复的指令直接放到/usr/local/nginx/conf/nginx.conf
哈哈,搞定了,http的要加到nginx.conf里的,Sever里填加到站点的conf里!
博主,配置完重启之后,Header没有X-Cache怎么办?刷新了很久
在折腾一个星期后,单站点 多站点的配置终于搞定,这篇文章确实帮助很大,让网站速度飞起来了。