—
subtile: WordPress 动静分离
summarize: WordPress动静分离实战:Nginx配置+CDN加速静态资源,动态请求减少70%,TTFB时间降低至200ms!
用wordpress建好站点之后,首要的就是要给wordpress做优化。首先,你要安装缓存插件,比如说wp super cache、memcached+Batcache、Redis+Redis Object Cache 、Nginx ngx_cache_purge+Nginx Helper,这么几个最常用的网站缓存加速的方法的组合。当然这些方法之前也都写过教程,下面我都罗列出来,如果有需求,可以去研究一下。
[[宝塔 —— wordpress 启用 memcached、batcache]]
[[宝塔 —— wordpress 开启 redis 加速]]
[[宝塔 —— wordpress 开启 nginx fastcgi_cache 缓存加速]]
推荐的是memcached+Batcache因为最简单,也最实用,也最好操作,大神水煮鱼也是推荐用memcached+Batcache这个组合来加速我们的wodpress!
这些如果你选择一个做了,你会发现网站瞬间变的很快,如果我们用测速网站测试一下,会发现网站响应一片绿色,但是如果紧紧这样做个优化就放任不管,也是不够的,如果网站做大了一点,我们还要给wordpress网站做一个动静分离。当然,你可以选择七牛或者是又拍云来处理网站的静态资源!
当然如果你不想这么做,可以看看分享的这篇文章,我们用最简单经济的方法来实现动静分离。毕竟大部分站长都是苦逼草根,能省一点就省一点吧,说了这么多最后就是想说,如何利用一台vps来实现偷懒的动静分离加速方法!
一、动静分离的简单优点
安装Bt(宝塔面板),然后安装wordpress,然后开启安装memcached+Batcache这一整套的操作,就不去详解了,因为都有配套的教程,大家可以仔细研究一下。我们这里直
首页说下原理,我们的网站简单来说分为 2 种数据资源,一种是动态的数据,即 PHP 等程序语言实时吐出来的数据,在网页内容上主要是 HTML 代码,另一种则是静态资源,比如图片、css、js、视频……
那动静分离是什么样子的呢,举个列子,我们访问网站的时候,发现主域名是www.xxx.com,但是打开源代码的时候,发现图片啊,css等等这些都是img.xxx.com这种形式的。如果我们单独给img.xxx.com这个静态的资源域名加个cdn会不会很牛叉,网站速度肯定要飞起来了。
1、因为这种静态二级域名,接入 CDN 之后,CDN 配置更加比较简单,完全不用考虑缓存规则的问题,因为直接设置成全部缓存就好了!简单粗暴。
2、用一台服务器实现动静分离,节省成本。毕竟苦逼站长很多。
3、解决主站直接使用一级域名带来的 cookies“污染”,即静态资源不会再带上主站的 cookies 数据,减小了体积。
二、新建一个网站然后反代到主站
因为我们安装的Bt(宝塔面板),所以我们要在服务器上利用反向代理新增了一个新网站,内容则是反向代理了我们的主站,从而实现了 2 个域名共享相同的网站数据。就是说如果我的主站是www.xxx.com,然后我新增一个res.xxx.xom的二级域名,这个二级域名反向-代-理到我的主域名上,Bt(宝塔面板)来实现反代也是非常简单的,我们看看如何实现!
1. 同服务器新建二级域名(我是本地站,所以使用端口)
2. 反向代理部署
目标 URL 这里填写主域名,反向代理要选中,可以开启缓存,也可以不开启。
三、反向代理的网站部署vhost
反向代理做好之后,我们开始部署这个二级域名的vhost,不然无法开启动静分离,如何操作呢,请往下面看!
1、找到res.daniao.org 的conf配置文件
我们要编辑 192.168.1.8:1016 的配置文件,但是这个文件在哪里呢,我们找找看!我们可以在网站设置里面可以编辑,可是画面太小,不好操作啊,大鸟还是找到源文件操作比较好!
2、res.daniao.org.conf的
路径:/www/server/panel/vhost/nginx
四、开始真正的部署之旅
server
{
listen 80;
server_name img.daniao.org;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/www.daniao.org;
#从这里复制图片等静态资源请求代理到本地主站(关键配置)
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.org; # 这里改为实际主站域名(必须)
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.org$1 permanent; # www.daniao.org 修改为实际主站域名
}
}
#复制到这里结束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.org_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.org;
}
location ~ .*\.(html|htm|png|gif|jpeg|jpg|bmp|js|css)?$
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
laoxiongb2c proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_pass https://www.daniao.org;
#缓存相关配置
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.org.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.org.log;
error_log /www/wwwlogs/img.daniao.org.error.log;
}
必须 注册 为本站用户, 登录 后才可以发表评论!