最近,有客戶說(shuō)他網(wǎng)站在國(guó)外,但國(guó)內(nèi)網(wǎng)站速度打開(kāi)非常慢,因?yàn)閲?guó)內(nèi)國(guó)外用戶訪問(wèn)都比較頻繁,希望對(duì)他們的網(wǎng)站國(guó)內(nèi)訪問(wèn)速度做個(gè)提升。他們的程序用的是wordpress??偟膩?lái)說(shuō),wordpress的插件模板加載數(shù)據(jù)比較多,就算安裝了wprocket這類緩存插件,做了js,css壓縮,或者數(shù)據(jù)庫(kù)優(yōu)化。其實(shí)對(duì)網(wǎng)站的速度也并不會(huì)有太大提升。
經(jīng)過(guò)一些簡(jiǎn)單的分析之后,我打算把他們的網(wǎng)站搬到cn2 gia線路的空間商,這也許是最快速的提升網(wǎng)站速度的辦法。以下就是我的一些實(shí)戰(zhàn)分享,以及網(wǎng)站遇到攻擊,如何快速切換數(shù)據(jù)。
注:這臺(tái)機(jī)器雖然放在國(guó)外,但百度蜘蛛抓取出現(xiàn)403等錯(cuò)誤的概率幾乎就沒(méi)有了。
一、現(xiàn)網(wǎng)站的情況分析
網(wǎng)站在搬遷之前,空間放置在digitalocean,cdn走的是cloudflare。雖然digitalocean在國(guó)外是非常不錯(cuò)的空間商,但對(duì)國(guó)內(nèi)用戶來(lái)說(shuō),訪問(wèn)走了cloudflare,所以速度依然非常慢。
另外,分線路dns做解析,雖然也是可以,但操作會(huì)比較麻煩。所以本文不討論。
通過(guò)無(wú)痕瀏覽器chrome,可以看出速度在6.35秒才 基本打開(kāi)。前期渲染用了4.46秒。
另外,通過(guò)站長(zhǎng)之家測(cè)速也可以看出。電信線路稍微快一些。但聯(lián)通和移動(dòng)的速度明顯都超過(guò)了4秒以上。
二、網(wǎng)站搬遷
關(guān)于空間商的選擇,其實(shí)只要選對(duì)穩(wěn)定的空間,好的線路?;旧隙际强梢缘?。我現(xiàn)在選的是搬瓦工的cn2 gia ecommerce。cn2 gia大的優(yōu)勢(shì)就是國(guó)內(nèi)三網(wǎng)訪問(wèn)都非???。而這個(gè)空間商也是速度最穩(wěn)定的。我現(xiàn)在一季度49.99美元,其實(shí)相當(dāng)于一個(gè)月16美元。
SSD: 20 GB RAID-10
RAM: 1 GB
CPU: 2x Intel Xeon
Transfer: 1000 GB/mo
這個(gè)可以根據(jù)每個(gè)人的情況不同,選擇不同的主機(jī)。但推薦大家在一開(kāi)始流量不是非常大的情況下,不用買(mǎi)特別好的主機(jī),后續(xù)可以再擴(kuò)容。
1、操作系統(tǒng)選擇
我用的是ubuntu 20.04。php 7.4 + nginx + mysql。為什么選這個(gè)呢。因?yàn)閜hp 7.4的速度比php 7.2的快30%。
2、命令行
為什么不用寶塔?因?yàn)榍岸螘r(shí)間寶塔剛出了一個(gè)大漏洞。而且網(wǎng)站這一塊,本人感覺(jué)還是盡量少用別的第三方工具。另外,搭建的VPS也可以盡量的干凈整潔。少一些外部程序。
以下命令行,建立在ubuntu 20.04的基礎(chǔ)上。只要按著命令?;径疾粫?huì)錯(cuò)。
ssh root@... -p 端口號(hào)
上面星號(hào)是IP地址。-p 是指定端口。因?yàn)榘嵬吖さ哪J(rèn)ssh端口不是22,所以這里要指定。
第一步:安裝nginx
sudo apt update
sudo apt install nginx
第二步:開(kāi)啟防火墻
sudo ufw app list
sudo ufw allow ‘OpenSSH’
sudo ufw allow ‘Nginx HTTPS’
sudo ufw allow ‘Nginx HTTP’
sudo ufw enable — 這條命令打完的時(shí)候,會(huì)提示可能會(huì)中斷ssh 連接。直接輸入y回車。
第三步:安裝mysql
sudo apt install mysql-server
sudo mysql_secure_installation (此步驟可選,這是一個(gè)安全腳本)。
輸入y回車,選擇2,較強(qiáng)密碼,輸入新密碼,這個(gè)密碼是mysql 的root密碼。
接著 基本選y。一個(gè)是移除匿名用戶,一個(gè)是禁止數(shù)據(jù)庫(kù)root遠(yuǎn)程登錄,最后是移除測(cè)試數(shù)據(jù)庫(kù)。
最后選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
此處就是一條命令,整個(gè)代碼復(fù)制就可以。這個(gè)基本上包含了wordpress能用上的所有模塊。
sudo systemctl reload php7.4-fpm nginx(重啟并加載配置)
第五步:把網(wǎng)站數(shù)據(jù)搬過(guò)來(lái)
因?yàn)槲业木W(wǎng)站是wordpress,可能你們的網(wǎng)站是別的程序?qū)懙模詢?nèi)容不一樣。這里就不寫(xiě)了。另外,記得做/etc/nginx/sites-enable/目錄下面的nginx.conf
server {
listen 80;
server_name your_domain .your_domain;
root /var/ /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 .example.com
替換example.com為你自己網(wǎng)站的域名。如果是多個(gè)子域名。就自己添加。
這里要注意一下,先要把dns指向當(dāng)前VPS,否則配置會(huì)不成功,如果是用Cloudflare。要關(guān)閉CDN。
看到最后有一句。Congratulations! Your certificate and chain have been saved at:就說(shuō)明安裝成功了。
這個(gè)證書(shū)有效時(shí)間是90天,但certbot會(huì)每天運(yùn)行兩個(gè)systemd計(jì)時(shí)器,來(lái)檢查證書(shū)有效性,并自動(dòng)續(xù)訂證書(shū)。你要檢查計(jì)時(shí)器是否有效。
sudo systemctl status certbot.timer
輸出結(jié)果如下,就說(shuō)明正常。
● 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
三、測(cè)試新網(wǎng)站網(wǎng)速
直接用國(guó)內(nèi)電 問(wèn),網(wǎng)站打開(kāi)時(shí)間有了明顯的提升。對(duì)比之前的速度大概提升了2-3倍。并且這還是晚上的速度。晚上的訪問(wèn)速度一點(diǎn)沒(méi)受影響。
除了標(biāo)紅的一個(gè)地址dns解析還沒(méi)生效,其余已經(jīng)生效的IP速度明顯都在2秒以內(nèi)打開(kāi)。
四、防DDOS攻擊及cloudflare快速切換攻防
這里我推薦使用cloudflare本配置你的網(wǎng)站。默認(rèn)情況下,不開(kāi)啟CDN。也就是域名直接指向IP。但如果在遇到ddos等攻擊的時(shí)候,建議立即開(kāi)啟cloudflare的代理,并把IP指向你備份的克隆空間。因?yàn)镮P做了隱藏,而攻擊者的大量攻擊數(shù)據(jù)也會(huì)被Cloudflare過(guò)濾掉,所以只要響應(yīng)及時(shí),就可以在短短幾分鐘內(nèi)恢復(fù)你的網(wǎng)站。
另外,可以通過(guò)access.log訪問(wèn)日志來(lái)定位你的攻擊來(lái)源IP。并在cloudflare的防火墻中,直接過(guò)濾可疑IP。比如用阻止訪問(wèn),或者驗(yàn)證碼的方式來(lái)定位攻擊者。而且cf的選項(xiàng)還可以屏蔽整個(gè)國(guó)家。
另外,開(kāi)啟under attack模式。可有效阻止中小型攻擊。