wordpress国内网速慢加速及防DDOS攻击快速CF切换教程

最近,有客户说他网站在国外,但国内网站速度打开很是慢,由于国内国外用户访问都比较频繁,但愿对他们的网站www.pjcourse.com国内访问速度作个提高。他们的程序用的是wordpress。总的来讲,wordpress的插件模板加载数据比较多,就算安装了wprocket这类缓存插件,作了js,css压缩,或者数据库优化。其实对网站的速度也并不会有太大提高。php

通过一些简单的分析以后,我打算把他们的网站搬到cn2 gia线路的空间商,这也许是最快速的提高网站速度的办法。如下就是个人一些实战分享,以及网站遇到攻击,如何快速切换数据。css

注:这台机器虽然放在国外,但百度蜘蛛抓取出现403等错误的几率几乎就没有了。html

1、现网站的状况分析python


网站在搬迁以前,空间放置在digitalocean,cdn走的是cloudflare。虽然digitalocean在国外是很是不错的空间商,但对国内用户来讲,访问走了cloudflare,因此速度依然很是慢。mysql

另外,分线路dns作解析,虽然也是能够,但操做会比较麻烦。因此本文不讨论。nginx

经过无痕浏览器chrome,能够看出速度在6.35秒才所有打开。前期渲染用了4.46秒。git

另外,经过站长之家测速也能够看出。电信线路稍微快一些。但联通和移动的速度明显都超过了4秒以上。sql

2、网站搬迁chrome


关于空间商的选择,其实只要选对稳定的空间,好的线路。基本上都是能够的。我如今选的是banwagong的cn2 gia ecommerce。cn2 gia最大的优点就是国内三网访问都很是快。而这个空间商也是速度最稳定的。我如今一季度49.99美圆,其实至关于一个月16美圆。数据库

SSD: 20 GB RAID-10

RAM: 1 GB

CPU: 2x Intel Xeon

Transfer: 1000 GB/mo

这个能够根据每一个人的状况不一样,选择不一样的主机。但推荐你们在一开始流量不是很是大的状况下,不用买特别好的主机,后续能够再扩容。

一、操做系统选择


我用的是ubuntu 20.04。php 7.4 + nginx + mysql。为何选这个呢。由于php 7.4的速度比php 7.2的快30%。

二、命令行


为何不用宝塔?由于前段时间宝塔刚出了一个大漏洞。并且网站这一块,本人感受仍是尽可能少用别的第三方工具。另外,搭建的VPS也能够尽可能的干净整洁。少一些外部程序。

如下命令行,创建在ubuntu 20.04的基础上。只要按着命令。基本都不会错。

ssh root@... -p 端口号

上面星号是IP地址。-p 是指定端口。由于banwagong的默认ssh端口不是22,因此这里要指定。

第一步:安装nginx

sudo apt update

sudo apt install nginx

第二步:开启防火墙

sudo ufw app list

sudo ufw allow 'OpenSSH'

sudo ufw allow 'Nginx HTTPS'

sudo ufw allow 'Nginx HTTP'

sudo ufw enable --- 这条命令打完的时候,会提示可能会中断ssh 链接。直接输入y回车。

第三步:安装mysql

sudo apt install mysql-server

sudo mysql_secure_installation (此步骤可选,这是一个安全脚本)。

输入y回车,选择2,最强密码,输入新密码,这个密码是mysql 的root密码。

接着所有选y。一个是移除匿名用户,一个是禁止数据库root远程登陆,最后是移除测试数据库。

最后选y。脚本当即生效。

第四步:安装php模块

sudo apt install php-imagick php7.4-fpm php7.4-mbstring php7.4-bcmath php7.4-xml php7.4-mysql php7.4-common php7.4-gd php7.4-json php7.4-cli php7.4-curl php7.4-zip

此处就是一条命令,整个代码复制就能够。这个基本上包含了wordpress能用上的全部模块。

sudo systemctl reload php7.4-fpm nginx(重启并加载配置)

第五步:把网站数据搬过来

由于个人网站是wordpress,可能大家的网站是别的程序写的,因此内容不同。这里就不写了。另外,记得作/etc/nginx/sites-enable/目录下面的nginx.conf

server {

listen 80;
server_name your_domain www.your_domain;
root /var/www/your_domain;


index index.html index.htm index.php;


location / {
    try_files $uri $uri/ =404;
}


location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
 }


location ~ /.ht {
    deny all;
}

替换配置文件中的your_domain为你的域名**.com

第六步:配置安装ssl

ssl我用的是let's encrypt。

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d example.com -d www.example.com

替换example.com为你本身网站的域名。若是是多个子域名。就本身添加。

这里要注意一下,先要把dns指向当前VPS,不然配置会不成功,若是是用Cloudflare。要关闭CDN。

看到最后有一句。Congratulations! Your certificate and chain have been saved at:

就说明安装成功了。

这个证书有效时间是90天,但certbot会天天运行两个systemd计时器,来检查证书有效性,并自动续订证书。你要检查计时器是否有效。

sudo systemctl status certbot.timer

输出结果以下,就说明正常。

● certbot.timer - Run certbot twice daily

Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
 Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left

Triggers: ● certbot.service

3、测试新网站网速


直接用国内电信访问,网站打开时间有了明显的提高。对比以前的速度大概提高了2-3倍。而且这仍是晚上的速度。晚上的访问速度一点没受影响。

除了标红的一个地址dns解析还没生效,其他已经生效的IP速度明显都在2秒之内打开。

4、防DDOS攻击及cloudflare快速切换攻防


这里我推荐使用cloudflare本配置你的网站。默认状况下,不开启CDN。也就是域名直接指向IP。但若是在遇到ddos等攻击的时候,建议当即开启cloudflare的代理,并把IP指向你备份的克隆空间。由于IP作了隐藏,而攻击者的大量攻击数据也会被Cloudflare过滤掉,因此只要响应及时,就能够在短短几分钟内恢复你的网站。

另外,能够经过access.log访问日志来定位你的攻击来源IP。并在cloudflare的防火墙中,直接过滤可疑IP。好比用阻止访问,或者验证码的方式来定位攻击者。并且cf的选项还能够屏蔽整个国家。

另外,开启under attack模式。可有效阻止中小型攻击。