今天说的还是 Bt(宝塔面板) 方面的教程,我们都知道,利用 wordpress 建站,很方便,而且 wordpress 优化起来也很方便,相关的教程网上搜索下还是有很多的!我们用 wordpress 建好站点之后,首要的就是要给 wordpress 做优化,大鸟前面也有讲过教程。这里大鸟在简单的说一下!
首页、你要安装缓存插件,比如说 wp super cache 、 memcached+Batcache 、 Redis+Redis Object Cache 、 Nginx ngx_cache_purge+Nginx Helper,这么几个最常用的网站缓存加速的方法的组合。当然这些方法大鸟也都写过教程,下面我都罗列出来,如果有需求,可以去研究一下。
- memcached+Batcache→bt(宝塔) 面板安装 wordpress 、启用 memcached 、 Batcache 让你的博客飞起来
- Redis+Redis Object Cach→Bt(宝塔面板)安装 wordpress 并开启 Redis 加速
- Nginx ngx_cache_purge+Nginx Helper→Wdcp v3,v2 启用 Nginx fastcgi_cache 缓存加速提高 wordpress 访问速度
大鸟推荐的是 memcached+Batcache 因为最简单,也最实用,也最好操作,大神水煮鱼也是推荐用 memcached+Batcache 这个组合来加速我们的 wodpress!
这些如果你选择一个做了,你会发现网站瞬间变的很快,如果我们用测速网站测试一下,会发现网站响应一片绿色,但是如果紧紧这样做个优化就放任不管,也是不够的,如果网站做大了一点,我们还要给 wordpress 网站做一个动静分离。当然,你可以选择七牛或者是又拍云来处理网站的静态资源!
当然如果你不想这么做,可以看看大鸟分享的这篇文章,我们用最简单经济的方法来实现动静分离。毕竟大部分站长都是苦逼草根,能省一点就省一点吧,说了这么多最后就是想说,如何利用一台 vps 来实现偷懒的动静分离加速方法!
第一:动静分离的简单优点
安装 Bt(宝塔面板),然后安装 wordpress,然后开启安装 memcached+Batcache 这一整套的操作,大鸟就不去详解了,因为都有配套的教程,大家可以仔细研究一下。我们这里直接开始动静分离。
首页说下原理,我们的网站简单来说分为 2 种数据资源,一种是动态的数据,即 PHP 等程序语言实时吐出来的数据,在网页内容上主要是 HTML 代码,另一种则是静态资源,比如图片、 css 、 js 、视频……
那动静分离是什么样子的呢,大鸟举个列子,我们访问网站的时候,发现主域名是 www.xxx,但是打开源代码的时候,发现图片啊,css 等等这些都是 img.xxx 这种形式的,额,看起来是不是很专业,大鸟也是很羡慕啊。如果我们单独给 img.xxx 这个静态的资源域名加个 cdn 会不会很牛叉,网站速度肯定要飞起来了。
1 、因为这种静态二级域名,接入 CDN 之后,CDN 配置更加比较简单,完全不用考虑缓存规则的问题,因为直接设置成全部缓存就好了!简单粗暴。
2 、大鸟用一台服务器实现动静分离,节省成本。毕竟苦逼站长很多。
3 、解决主站直接使用一级域名带来的 cookies“污染”,即静态资源不会再带上主站的 cookies 数据,减小了体积。
第二:新建一个网站然后反代到主站
额,我都说的有点乱了,下面看看如何实现吧。因为我们安装的 Bt(宝塔面板) 所以我们要在服务器上利用反向-代-理新增了一个新网站,内容则是反向-代-理了我们的主站,从而实现了 2 个域名共享相同的网站数据。就是说如果我的主站是 www.xxx, 然后我新增一个 res.xxx.xom 的二级域名,这个二级域名反向-代-理到我的主域名上,Bt(宝塔面板) 来实现反代也是非常简单的,我们看看如何实现!
1 、同服务器新建一个二级域名的网站
我们提交就可以了,这样我们就新建好了一个二级域名的网站,然后用这个站方向代理到我们的主站上面!
2 、反向-代-理的部署
Bt(宝塔面板) 来操作方向代理也是很简单,我们来看一下!
目标 url 这里填写我们的主域名,反向-代-理那个要选中!也可以开启缓存,也可以不开启,这个随意!
第三:反向-代-理的网站部署 vhost
反向-代-理做好之后,我们开始部署这个二级域名的 vhost,不然无法开启动静分离,如何操作呢,请往下面看!
1 、找到 res.daniao 的 conf 配置文件
我们要编辑 res.daniao.conf 的配置文件,但是这个文件在哪里呢,我们找找看!我们可以在网站设置里面可以编辑,可是画面太小,不好操作啊,大鸟还是找到源文件操作比较好!
2 、 res.daniao.conf 的源文件
大鸟的 res.daniao 已经找到,我们在这里打开编辑!
第四:开始真正的部署之旅
我擦,啰嗦这么多,要开始了么,是的这下开始了,我们现在开始编辑 res.daniao 这个 conf 配置文件。大鸟给出代码,直接复制即可!
- server
- {
- listen 80;
- server_name img.daniao;
- index index.php index.html index.htm default.php default.htm default.html;
- root /www/wwwroot/www.daniao;
- #从这里复制图片等静态资源请求代理到本地主站(关键配置)
- location ~* .*\.(js|css|png|jpeg|jpg|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
- add_header Access-Control-Allow-Origin *; #解决字体跨站问题
- add_header Access-Control-Allow-Headers X-Requested-With;
- add_header Access-Control-Allow-Methods GET,OPTIONS;
- proxy_pass http://127.0.0.1; # 如果是启用了 https 的网站,这里最好改成 https://127.0.0.1, 避免主站加了非 https 协议的跳转配置,导致不成功。
- proxy_set_header X-Forwarded-For $remote_addr;
- proxy_redirect off;
- proxy_set_header Host www.daniao; # 这里改为实际主站域名(必须)
- expires max; # 设置浏览器 304 缓存为最长期限
- }
- #为这个二级域名额外设置一个 robots 文件
- location ~ (robots.txt) {
- rewrite /robots.txt /resrobots.txt last; #在网站根目录新增一个 resrobots.txt,内容和七牛 CDN 类似,禁止搜索引擎抓取非静态资源
- }
- #如果通过静态域名访问的是非静态资源,比如访问了我们的文章页面,则跳到主站对应的页面。
- location / {
- if ( $request_uri !~* .*\.(js|css|png|jpeg|jpg|gif|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf))
- {
- rewrite ^(.*)$ $scheme://www.daniao$1 permanent; # www.daniao 修改为实际主站域名
- }
- }
- #复制到这里结束 SSL-START SSL 相关配置,请勿删除或修改下一行带注释的 404 规则
- #error_page 404/404.html;
- #SSL-END
- #ERROR-PAGE-START 错误页配置,可以注释、删除或修改
- error_page 404 /404.html;
- error_page 502 /502.html;
- #ERROR-PAGE-END
- #PHP-INFO-START PHP 引用配置,可以注释或修改
- #PROXY-START
- location ~ /purge(/.*) {
- proxy_cache_purge cache_one $host$request_uri$is_args$args;
- #access_log /www/wwwlogs/img.daniao_purge_cache.log;
- }
- location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$
- {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header REMOTE-HOST $remote_addr;
- proxy_pass https://www.daniao;
- }
- location ~ .*\.(html|htm|png|gif|jpeg|jpg|bmp|js|css)?$
- {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header REMOTE-HOST $remote_addr;
- proxy_pass https://www.daniao;
- #缓存相关配置
- proxy_cache cache_one;
- proxy_cache_key $host$request_uri$is_args$args;
- proxy_cache_valid 200 304 301 302 1h;
- expires 24h;
- }
- #PROXY-END
- include enable-php-70.conf;
- #PHP-INFO-END
- #REWRITE-START URL 重写规则引用, 修改后将导致面板设置的伪静态规则失效
- include /www/server/panel/vhost/rewrite/img.daniao.conf;
- #REWRITE-END
- #禁止访问的文件或目录
- location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
- {
- return 404;
- }
- #一键申请 SSL 证书验证目录相关设置
- location ~ \.well-known{
- allow all;
- }
- access_log /www/wwwlogs/img.daniao.log;
- error_log /www/wwwlogs/img.daniao.error.log;
- }
这样就在本地新增了和主站共用一份数据的二级域名,只提供静态资源访问,其他访问都跳到主站对应页面。这是大鸟的 conf 配置文件,直接复制即可,但是涉及到域名修改的请自行修改。其他的没什么变动只是加了一段代码看我标注的地方,大鸟在单独写出来!放的位置就安装大鸟这个位置来放。
- # 图片等静态资源请求代理到本地主站(关键配置)
- location ~* .*\.(js|css|png|jpeg|jpg|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
- add_header Access-Control-Allow-Origin *; # 解决字体跨站问题
- add_header Access-Control-Allow-Headers X-Requested-With;
- add_header Access-Control-Allow-Methods GET,OPTIONS;
- proxy_pass http://127.0.0.1; # 如果是启用了 https 的网站,这里最好改成 https://127.0.0.1, 避免主站加了非 https 协议的跳转配置,导致不成功。
- proxy_set_header X-Forwarded-For $remote_addr;
- proxy_redirect off;
- proxy_set_header Host www.daniao; # 这里改为实际主站域名(必须)
- expires max; # 设置浏览器 304 缓存为最长期限
- }
- # 为这个二级域名额外设置一个 robots 文件
- location ~ (robots.txt) {
- rewrite /robots.txt /resrobots.txt last; # 在网站根目录新增一个 resrobots.txt,内容和七牛 CDN 类似,禁止搜索引擎抓取非静态资源
- }
- # 如果通过静态域名访问的是非静态资源,比如访问了我们的文章页面,则跳到主站对应的页面。
- location / {
- if ( $request_uri !~* .*\.(js|css|png|jpeg|jpg|gif|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf))
- {
- rewrite ^(.*)$ $scheme://www.daniao$1 permanent; # www.daniao 修改为实际主站域名
- }
- }
也不知道被转义了没有,大鸟也没安装个高亮的插件,如果有问题,给我留言,我从新发给你们!
第五:网站的静态资源替换为这个新二级域名
完成新增后,将网站的静态资源替换为这个新二级域名,把下面的代码加到 functions.php 即可完成替换:
- /**
- * WordPress CDN 代码版 By 张戈博客
- * 以下代码引用自张戈博客
- * 原文地址:http://zhangge/4905.html
- **/
- function QiNiuCDN(){
- function Rewrite_URI($html){
- $domain = 'www\.daniao\'; //填写主站域名,小数点前需要加上反斜杠转义
- $static = 'img.daniao'; //填写二级静态域名
- //更多静态资源需要替换,可以将后缀加到后面的括号,使用分隔符分割
- $html = preg_replace('/http(s|):\/\/'.$domain.'\/wp-([^"\']*?)\.(jpg|png|gif|bmp|jpeg|css|js)/i','//'.$static.'/wp-$2.$3',$html);
- return $html;
- }
- if(!is_admin()){
- ob_start("Rewrite_URI");
- }
- }
- add_action('init', 'QiNiuCDN');
完成部署后,我们网站的前台页面中的图片、 js 等静态资源链接就全部换成了新的二级域名了。按张戈大神说的可以把这个二级域名接入 CDN 即可,接入方法就不啰嗦了,自己折腾吧!
第六:nginx 报错
额,我们会遇到问题,因为大鸟也遇到过,大鸟这里说一下解决方法。错误问题下面贴图出来了。反正都是类似的。
nginx: [emerg] duplicate location "/" in /www/server/panel/vhost/nginx/res.iqu.la.conf:45 nginx: configuration file /www/server/nginx/conf/nginx.conf test failed
大鸟是这种报错,也就是 conf 配置文件的 45 行有错误!大鸟分析了下,发现是张戈大神的代码和 Bt(宝塔面板) 的配置文件有冲突,我们删除就好!
- location /
- {
- proxy_pass https://www.daniao;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header REMOTE-HOST $remote_addr;
- #持久化连接相关配置
- #proxy_connect_timeout 30s;
- #proxy_read_timeout 86400s;
- #proxy_send_timeout 30s;
- #proxy_http_version 1.1;
- #proxy_set_header Upgrade $http_upgrade;
- #proxy_set_header Connection "upgrade";
- add_header X-Cache $upstream_cache_status;
- expires 12h;
- }
把这一段删除就好了,请大家仔细找一下!删除之后保存就没有问题了。
第七:resrobots.txt
别忘了在主网站的根目录新建个 resrobots.txt 然后把禁止蜘蛛抓取的代码复制进去。
- User-agent: *
- Allow: /robots.txt
- Allow: /wp-content/
- Allow: /*.png*
- Allow: /*.jpg*
- Allow: /*.jpeg*
- Allow: /*.gif*
- Allow: /*.bmp*
- Allow: /*.ico*
- Allow: /*.js*
- Allow: /*.css*
- Disallow: /
总结
大鸟这里是 Bt(宝塔面板) 来做测试,并测试成功,其他面板大鸟没有做测试,这是一个非彻底的动静分离,也是偷懒的方法,但是实际使用中,最终效果的区别并不大。而且,我们有单独的域名来驱动静态文件,也可以套入 cdn 来进一步加速。大鸟没有开启 Bt(宝塔面板) 自带的缓存做测试,需要的同学可以开启缓存试试看!
总之,整个教程都说完了,大鸟也是懵逼状态,能理解的就这么多,如果有问题,可以多交流,有错误欢迎指正!文章代码引用的原文地址:http://zhangge/4905.html,张戈大神应该用的是 lnmp 的一键安装包,如果同样的环境可以直接复制大神给出的代码。
大鸟这里用的 Bt(宝塔面板) 安装 wordpress 然后开启了动静分离优化,其他面板仅作参考!
更多推荐
Bt(宝塔面板) 安装 wordpress 以及如何开启最简单实用的动静分离优化
《t(宝塔面板)安装wordpress以及如何开启最简单实用的动静分离优化》留言数:0